本帖最后由 ashleytgg 于 2019-12-26 23:00 编辑
我对 http://bbs.mjtd.com/forum.php?mo ... 414&fromuid=7316343 这个帖子中 的内容稍微修改了下。我修改的内容 ,是用素数的原根 对一个字符串进行加密。
比如素数为239,原根为7, 7是模239的原根时,7^0,7^1,……7^(239-1)构成模 239的简化剩余系。 再次声明, 本程序的大部分都是从别人那里引用来的,我只是改了一下。
 - ;; 求7 的222次方摸 239 的余数
- (defun mode_N (Base_number exponent modulo / y)
- (setq y 1)
- (repeat exponent
- (setq y (* y Base_number)
- y (rem y modulo)
- )
- )
- y
- )
- ;; ( mode_N 7 222 239)
- ;| 制造一个函数 对序列号 进行混淆 用素数239 的原根7 进行重排
- (setq str (wdy_mac ) ) 返回值"60:36:DD:6D:95:75"
- 输入参数 : prime_number 素数,
- 该素数的原根 Prime_primitive_root
- (setq prime_number 239 Prime_primitive_root 7)
- |;
- (defun num_Confused (str prime_number Prime_primitive_root
- / str2 code
- lennum lennum2 strlst2
- strlst
- )
- (setq strlst (vl-string->list str)
- lennum (length strlst)
- str2
- "i love you ,china ,i love you ,my son
- ,i love you my wife ,you are all my passion"
- strlst2 (vl-string->list str2)
- strlst2 (append strlst2 strlst)
- lennum2 (length strlst2)
- )
- ;; 用strlst2 把strlst 元素个数 补成 prime_number 239个
- (setq i 0)
- (repeat (- prime_number lennum)
- (setq strlst (append strlst
- (list (nth (rem i lennum2) strlst2))
- )
- i (1+ i)
- )
- )
- ;; 用 prime_number239 的原根7 对 strlst 进行重排
- (setq i 0
- code nil
- )
- ;; (mode_N 7 i 239) 表示: 求 7^i (mode 239)
- (repeat (length strlst)
- (setq code (cons
- (nth (mode_N Prime_primitive_root i prime_number)
- strlst
- )
- code
- )
- i (1+ i)
- )
- )
- (vl-list->string (reverse code))
- )
- ;; (LM:MD5 (vl-string->list (num_Confused str 239 7 ) ) )
|