找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 3836|回复: 29

[每日一码] MD5加密

[复制链接]

已领礼包: 7个

财富等级: 恭喜发财

发表于 2016-4-12 17:44:57 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
;; MD5 Cryptographic Hash Function  -  V1.1 2016-03-27  -  Lee Mac
;; AutoLISP implementation of the MD5 algorithm by Ronald Rivest
;; lst - [lst] List of bytes for which to generate hash
;; Returns 128-bit (16-byte) hash string.
;;===========================================
;;参数String 为字符串
;;调用 (YC:MD5 String)
;;返回加密后字符串
[sell=1]
  1. (defun YC:MD5 ( String / lst a b c d f g h i k l r w x y )
  2.    (setq lst (StringToAscii String))
  3.     (setq k
  4.         (mapcar '(lambda ( x ) (md5:int->bits x 32))
  5.            '(
  6.                 3614090360 3905402710 0606105819 3250441966 4118548399 1200080426 2821735955 4249261313
  7.                 1770035416 2336552879 4294925233 2304563134 1804603682 4254626195 2792965006 1236535329
  8.                 4129170786 3225465664 0643717713 3921069994 3593408605 0038016083 3634488961 3889429448
  9.                 0568446438 3275163606 4107603335 1163531501 2850285829 4243563512 1735328473 2368359562
  10.                 4294588738 2272392833 1839030562 4259657740 2763975236 1272893353 4139469664 3200236656
  11.                 0681279174 3936430074 3572445317 0076029189 3654602809 3873151461 0530742520 3299628645
  12.                 4096336452 1126891415 2878612391 4237533241 1700485571 2399980690 4293915773 2240044497
  13.                 1873313359 4264355552 2734768916 1309151649 4149444226 3174756917 0718787259 3951481745
  14.             )
  15.         )
  16.     )

  17.     (setq r
  18.        '(
  19.             07 12 17 22  07 12 17 22  07 12 17 22  07 12 17 22
  20.             05 09 14 20  05 09 14 20  05 09 14 20  05 09 14 20
  21.             04 11 16 23  04 11 16 23  04 11 16 23  04 11 16 23
  22.             06 10 15 21  06 10 15 21  06 10 15 21  06 10 15 21
  23.         )
  24.     )

  25.     (setq h
  26.         (mapcar '(lambda ( x ) (md5:int->bits x 32))
  27.            '(
  28.                 1732584193 ; 0x67452301 = 01234567
  29.                 4023233417 ; 0xefcdab89 = 89abcdef
  30.                 2562383102 ; 0x98badcfe = fedcda98
  31.                 0271733878 ; 0x10325476 = 76543210
  32.             )
  33.         )
  34.     )


  35.     (setq l (cons 128 (reverse lst)))
  36.     (repeat (rem (+ 64 (- 56 (rem (length l) 64))) 64) (setq l (cons 0 l)))
  37.     (setq l (append (reverse l) (md5:bits->bytes (md5:int->bits (* 8 (length lst)) 64))))


  38.     (repeat (/ (length l) 64)

  39.         (repeat 16
  40.             (setq w (cons (md5:bytes->bits (mapcar '+ l '(0 0 0 0))) w)
  41.                   l (cddddr l)
  42.             )
  43.         )
  44.         (setq w (reverse w))


  45.         (mapcar 'set '(a b c d) h)

  46.         (setq i 0)
  47.         (repeat 64
  48.             (cond
  49.                 (   (< i 16)
  50.                     (setq f (mapcar 'logior (mapcar 'logand b c) (mapcar 'logand (mapcar '(lambda ( a ) (+ 2 (~ a))) b) d))
  51.                           g i
  52.                     )
  53.                 )
  54.                 (   (< i 32)
  55.                     (setq f (mapcar 'logior (mapcar 'logand d b) (mapcar 'logand (mapcar '(lambda ( a ) (+ 2 (~ a))) d) c))
  56.                           g (rem (1+ (* 5 i)) 16)
  57.                     )
  58.                 )
  59.                 (   (< i 48)
  60.                     (setq f (mapcar '(lambda ( a b c ) (boole 6 a b c)) b c d)
  61.                           g (rem (+ 5 (* 3 i)) 16)
  62.                     )
  63.                 )
  64.                 (   (setq f (mapcar '(lambda ( a b ) (boole 6 a b)) c (mapcar 'logior b (mapcar '(lambda ( a ) (+ 2 (~ a))) d)))
  65.                           g (rem (* 7 i) 16)
  66.                     )
  67.                 )
  68.             )
  69.             (mapcar 'set '(d c a b i)
  70.                 (list c b d
  71.                     (md5:uint32_+ b
  72.                         (md5:leftrotate
  73.                             (md5:uint32_+
  74.                                 (md5:uint32_+
  75.                                     (md5:uint32_+ a f)
  76.                                     (nth i k)
  77.                                 )
  78.                                 (nth g w)
  79.                             )
  80.                             (nth i r)
  81.                         )
  82.                     )
  83.                     (1+ i)
  84.                 )
  85.             )
  86.         )

  87.         (setq h (mapcar 'md5:uint32_+ h (list a b c d))
  88.               w nil
  89.         )
  90.     )

  91.     (apply 'strcat
  92.         (mapcar 'md5:byte->hex
  93.             (apply 'append (mapcar 'md5:bits->bytes h))
  94.         )
  95.     )
  96. )
  97. (defun StringToAscii (String / positioni YPOutString)
  98. (setq positioni -1)
  99. (repeat (strlen string)
  100. (setq YPOutString (append YPOutString (list (vl-string-elt string (setq positioni (+ positioni 1))))))
  101. )
  102.   YPOutString
  103. )
  104. (defun md5:int->bits ( n b / l x )
  105.     (repeat b (setq l (cons 0 l)))
  106.     (foreach x (vl-string->list (rtos n 2 0))
  107.         (setq x (- x 48)
  108.               l (mapcar '(lambda ( a ) (setq a (+ (* a 10) x) x (/ a 2)) (rem a 2)) l)
  109.         )
  110.     )
  111.     (reverse l)
  112. )
  113. (defun md5:bits->int ( l )
  114.     (   (lambda ( f ) (f (reverse l)))
  115.         (lambda ( l ) (if l (+ (* 2.0 (f (cdr l))) (car l)) 0))
  116.     )
  117. )
  118. (defun md5:bits->bytes ( l / b r )
  119.     (repeat (/ (length l) 8)
  120.         (repeat 8
  121.             (setq b (cons (car l) b)
  122.                   l (cdr l)
  123.             )
  124.         )
  125.         (setq r (cons (fix (+ 1e-8 (md5:bits->int (reverse b)))) r)
  126.               b nil
  127.         )
  128.     )
  129.     r ;; output is little-endian
  130. )
  131. (defun md5:bytes->bits ( l ) ;; input is little-endian
  132.     (apply 'append (mapcar '(lambda ( b ) (md5:int->bits b 8)) (reverse l))) ;; output is big-endian
  133. )
  134. (defun md5:int->char ( n )
  135.     (chr (+ n (if (< n 10) 48 87)))
  136. )
  137. (defun md5:byte->hex ( x )
  138.     (strcat (md5:int->char (/ x 16)) (md5:int->char (rem x 16)))
  139. )
  140. (defun md5:leftrotate ( l x )
  141.     (repeat x (setq l (append (cdr l) (list (car l)))))
  142. )
  143. (defun md5:uint32_+ ( bl1 bl2 / r ) ;; input is big-endian
  144.     (setq r 0)
  145.     (reverse
  146.         (mapcar
  147.            '(lambda ( a b c / x )
  148.                 (setq x (boole 6 (boole 6 a b) r)
  149.                       r (boole 7 (boole 1 a b) (boole 1 a r) (boole 1 b r))
  150.                 )
  151.                 x
  152.             )
  153.             (append (reverse bl1) (md5:uint32_0))
  154.             (append (reverse bl2) (md5:uint32_0))
  155.             (md5:uint32_0)
  156.         )
  157.     ) ;; output is big-endian
  158. )
  159. (defun md5:uint32_0 ( / l )
  160.     (repeat 32 (setq l (cons 0 l)))
  161.     (eval (list 'defun 'md5:uint32_0 nil (list 'quote l)))
  162.     (md5:uint32_0)
  163. )
  164. (princ)


[/sell]

评分

参与人数 2D豆 +15 收起 理由
XDSoft + 10 很给力!经验;技术要点;资料分享奖!
newer + 5 很给力!经验;技术要点;资料分享奖!

查看全部评分

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 19个

财富等级: 恭喜发财

发表于 2016-4-12 18:11:47 | 显示全部楼层
谢谢楼主,支持分享,回个帖子把花费挣回来
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 5583个

财富等级: 富甲天下

发表于 2016-4-13 08:12:41 | 显示全部楼层
感谢楼主!有了加密,是否也包含有解密呢?期待。

点评

MD5加密不可逆  详情 回复 发表于 2016-4-13 10:11
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 604个

财富等级: 财运亨通

发表于 2016-4-13 08:14:21 | 显示全部楼层
加密后怎么用,比如make,加密后lisp还认识他是make?

点评

MD5加密不可逆,他是指纹,你可以用在比如保存密码,然后输入的明文密码MD5和你保存过的加密的密码比较是否一样  详情 回复 发表于 2016-4-13 09:28
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 264个

财富等级: 日进斗金

发表于 2016-4-13 08:31:19 来自手机 | 显示全部楼层
md5加密后好像只有爆破一个途径,算法不可逆
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2016-4-13 09:28:02 | 显示全部楼层
/db_自贡黄明儒_ 发表于 2016-4-13 08:14
加密后怎么用,比如make,加密后lisp还认识他是make?

MD5加密不可逆,他是指纹,你可以用在比如保存密码,然后输入的明文密码MD5和你保存过的加密的密码比较是否一样
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2016-4-13 10:11:04 | 显示全部楼层
HLCAD 发表于 2016-4-13 08:12
感谢楼主!有了加密,是否也包含有解密呢?期待。

MD5加密不可逆
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1904个

财富等级: 堆金积玉

发表于 2016-4-17 10:08:46 | 显示全部楼层
花费10豆,谢谢楼主,支持分享
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2016-11-13 20:40:49 来自手机 | 显示全部楼层
我用MD5做程序许可
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 604个

财富等级: 财运亨通

发表于 2016-11-14 07:44:37 | 显示全部楼层

风版,来一个实例吧
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 127个

财富等级: 日进斗金

发表于 2016-11-14 08:42:00 | 显示全部楼层

谢谢楼主,支持分享,回个帖子把花费挣回来
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 127个

财富等级: 日进斗金

发表于 2016-11-14 08:48:27 | 显示全部楼层

来个实例学习下!!!!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6881个

财富等级: 富甲天下

发表于 2016-11-14 11:03:20 | 显示全部楼层
来个实例学习下!!!!!来个实例学习下!!!!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6881个

财富等级: 富甲天下

发表于 2016-11-14 16:20:51 | 显示全部楼层
(YC:MD5 "参数String 为字  符串") ---> "b6b4ab0235c9ab11564d461bd99714ab"
不知有什么用啊
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2016-11-17 18:03:46 来自手机 | 显示全部楼层
我用MD5加密设置用户许可
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-4-18 20:00 , Processed in 0.457615 second(s), 65 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表