清單1
LSDAA: ADC r16,r16 ;十進(jìn)制數(shù)(在r16中)左移調(diào)整子程序
ADDAA: IN R6,SREG ;bcd碼相加調(diào)整子程序,先保存相加后的
LDI R17,$66 ;狀態(tài)the old status
ADD r16,R17 ;再將和預(yù)加立即數(shù)$66
IN R17,SREG ;輸入相加后新狀態(tài)(the new status)
OR R6,R17 ;新舊狀態(tài)相或
SBRS R6,0 ;相或后進(jìn)位置位則跳行
SUBI r16,$60 ;否則減去$60(十位bcd不滿足調(diào)整條件)
SBRS R6,5 ;半進(jìn)位置位則跳行
SUBI r16,6 ;否則減去$06(個位bcd不滿足調(diào)整條件)
ROR R6 ;向高位BCD返還進(jìn)位位!
RET
標(biāo)簽:
AVR
單片機實用
程序設(shè)計
上傳時間:
2013-10-08
上傳用戶:zh_901
可以實現(xiàn)des的功能,c++編寫。
DES算法把64位的明文輸入塊變?yōu)?4位的密文輸出塊,它所使用的密鑰也是64位,其算法主要分為兩步:
1初始置換
其功能是把輸入的64位數(shù)據(jù)塊按位重新組合,并把輸出分為L0、R0兩部分,每部分各長3 2位,其置換規(guī)則為將輸入的第58位換到第一位,第50位換到第2位……依此類推,最后一位是原來的第7位。L0、R0則是換位輸出后的兩部分,L0是輸出的左32位,R0是右32位,例:設(shè)置換前的輸入值為D1D2D3……D64,則經(jīng)過初始置換后的結(jié)果為:L0=D58D50……D8 R0=D57D49……D7。
2逆置換
經(jīng)過16次迭代運算后,得到L16、r16,將此作為輸入,進(jìn)行逆置換,逆置換正好是初始置換的逆運算,由此即得到密文輸出。
標(biāo)簽:
des
上傳時間:
2016-11-27
上傳用戶:變形金剛