完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
#include ;
global DECRYPT global KEY0,KEY1,KEY2,KEY3,KEY4,KEY5,KEY6,KEY7 global CSR0,CSR1,CSR2,CSR3,CSR4,CSR5,CSR6,CSR7,CSR8 ; #define HOP1 CSR0 ; ﹚竡 HOP1~4 单? CSR1~4 #define HOP2 CSR1 #define HOP3 CSR2 #define HOP4 CSR3 #define MAX_CODE_LENGTH .72 #define CODE_LENGTH .66 ; UDATA_SHR ; Difine CSR0:CSR7 on Share memory CSR0 res 1 ; Hopping Code 钡Μ?纗??既?竟 (LSB) CSR1 res 1 CSR2 res 1 CSR3 res 1 CSR4 res 1 CSR5 res 1 CSR6 res 1 CSR7 res 1 CSR8 res 1 ; Hopping Code 钡Μ?纗??既?竟 (MSB) ; Encrypt_Data UDATA 0x20 KEY0 res 1 ; 64-bit 秆盞じン戈? (LSB) KEY1 res 1 KEY2 res 1 KEY3 res 1 KEY4 res 1 KEY5 res 1 KEY6 res 1 KEY7 res 1 ; UDATA CNT0 res 1 CNT1 res 1 HOP_LENGTH res 1 MASK res 1 KEELOQ_Temp res 1 ; ; KEELOQ_CODE CODE ; ;***************************************************** ;**** Rotate CSRs register right 1 bit ;***************************************************** ROT_CSRs RRF CSR8,F RRF CSR7,F RRF CSR6,F RRF CSR5,F RRF CSR4,F RRF CSR3,F RRF CSR2,F RRF CSR1,F RRF CSR0,F return ; ; ; ; ;**************************************************************** ; ; FUNCtiON : DECRYPT () ; ; DESCRIPTION : DECRYPTS 32 BIT [HOP1:HOP4] USING [CSR0:CSR7] ; ;**************************************************************** DECRYPT BANKSEL CNT1 MOVLW (.11+1) ; OUTER LOOP 11+1 TIMES MOVWF CNT1 ; OUTER LOOP 11+1 TIMES DECRYPT_OUTER MOVLW .48 ; INNER LOOP 48 TIMES MOVWF CNT0 ; INNER LOOP 48 TIMES DECRYPT_INNER CLRWDT ; RESET WATCHDOG TIMER MOVFW CNT1 ; LAST 48 LOOPS RESTORE THE KEY XORLW .1 ; LAST 48 LOOPS RESTORE THE KEY btfsc STATUS,Z ; LAST 48 LOOPS RESTORE THE KEY GOTO ROTATE_KEY ; LAST 48 LOOPS RESTORE THE KEY ; THE LOOKUP TABLE IS COMPRESSED INTO IN 4 BYTES TO SAVE SPACE ; USE THE 3 LOW INDEX BITS TO MAKE UP AN 8-BIT BIT MASK ; USE THE 2 HIGH INDEX BITS TO LOOK UP THE VALUE IN THE TABLE ; USE THE BIT MASK TO ISOLATE THE CORRECT BIT IN THE BYTE ; PART OF THE REASON FOR THIS SCHEME IS BECAUSE NORMAL TABLE ; LOOKUP REQUIRES AN ADDITIONAL STACK LEVEL bcf STATUS,C ; CLEAR CARRY (FOR THE LEFT SHIFT) MOVLW .1 ; INITIALISE MASK = 1 BTFSC HOP3,3 ; SHIFT MASK 4X IF BIT 2 SET MOVLW B'00010000' ; SHIFT MASK 4X IF BIT 2 SET MOVWF MASK ; INITIALISE MASK = 1 BTFSS HOP2,0 ; SHIFT MASK ANOTHER 2X IF BIT 1 SET GOTO $+3 RLF MASK,F RLF MASK,F BTFSC HOP1,0 ; SHIFT MASK ANOTHER 1X IF BIT 0 SET RLF MASK,F ; MASK HAS NOW BEEN SHIFTED 0-7 TIMES ACCORDING TO BITS 2:1:0 MOVlw HIGH TABLE MOVwf PCLATH MOVlw LOW TABLE MOVwf KEELOQ_Temp MOVLW 0 ; TABLE INDEX = 0 BTFSC HOP4,1 IORLW .2 ; IF BIT 3 SET ADD 2 TO THE TABLE INDEX BTFSC HOP4,6 IORLW .4 ; IF BIT 4 SET ADD 4 TO THE TABLE INDEX addwf KEELOQ_Temp,W btfsc STATUS,C incf PCLATH,F MOVwf PCL ; ADD THE INDEX TO THE PROGRAM COUNTER ; [ MUST BE IN LOWER HALF OF PAGE ] TABLE MOVLW 0x2E ; BITS 4:3 WERE 00 GOTO TABLE_END ; END OF LOOKUP MOVLW 0x74 ; BITS 4:3 WERE 01 GOTO TABLE_END ; END OF LOOKUP MOVLW 0x5C ; BITS 4:3 WERE 10 GOTO TABLE_END ; END OF LOOKUP MOVLW 0x3A ; BITS 4:3 WERE 11 TABLE_END ANDWF MASK,1 ; ISOLATE THE CORRECT BIT MOVLW 0 ; COPY THE BIT TO BIT 7 btfss STATUS,Z ; COPY THE BIT TO BIT 7 MOVLW B'10000000' ; COPY THE BIT TO BIT 7 XORWF HOP2,W ; ONLY INTERESTED IN BIT HOP2,7 XORWF HOP4,W ; ONLY INTERESTED IN BIT HOP4,7 XORWF KEY1,W ; ONLY INTERESTED IN BIT KEYREG1,7 MOVWF MASK ; STORE W TEMPORARILY (WE NEED BIT 7) RLF MASK,F ; LEFT ROTATE MASK TO GET BIT 7 INTO CARRY RLF HOP1,F ; SHIFT IN THE NEW BIT RLF HOP2,F RLF HOP3,F RLF HOP4,F ROTATE_KEY bcf STATUS,C ; CLEAR CARRY BTFSC KEY7,7 ; SET CARRY IF LEFTMOST BIT SET bsf STATUS,C ; SET CARRY IF LEFTMOST BIT SET RLF KEY0,F ; LEFT-ROTATE THE 64-BIT KEY RLF KEY1,F RLF KEY2,F RLF KEY3,F RLF KEY4,F RLF KEY5,F RLF KEY6,F RLF KEY7,F DECFSZ CNT0,F ; INNER LOOP 48 TIMES GOTO DECRYPT_INNER ; INNER LOOP 48 TIMES DECFSZ CNT1,F ; OUTER LOOP 12 TIMES (11+1 TO RESTORE KEY) GOTO DECRYPT_OUTER ; OUTER LOOP 12 TIMES (11+1 TO RESTORE KEY) RETLW 0 ; RETURN |
|
相关推荐
1 个讨论
|
|
stm32f407+ksz8863rlli概率性ping不通
478 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-常见网络服务搭建之NFS服务搭建
320 浏览 0 评论
求助:辉芒微芯片 FDM B11GBMH 的信息及开发环境安装
245 浏览 0 评论
867 浏览 0 评论
嵌入式 学习-飞凌嵌入式ElfBoard ELF 1板卡-shell脚本编写之输入输出重定向
740 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11303 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-9-28 23:01 , Processed in 0.922389 second(s), Total 43, Slave 34 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号