注册 登录
明经CAD社区 返回首页

cabinsummer的个人空间 http://www.mjtd.com/?391060 [收藏] [复制] [分享] [RSS]

留言板

facelist doodle涂鸦板

您需要登录后才可以留言 登录 | 注册


cabinsummer 2021-10-22 14:55
(defun MD5 (String / lst a b c d f g h i k l r w x y)
  (setq lst (StringToAscii String))
  (setq k
    (mapcar
      '(lambda (x) (md5:int->bits x 32))
      '(
        3614090360 3905402710 0606105819 3250441966 4118548399 1200080426 2821735955 4249261313
        1770035416 2336552879 4294925233 2304563134 1804603682 4254626195 2792965006 1236535329
        4129170786 3225465664 0643717713 3921069994 3593408605 0038016083 3634488961 3889429448
        0568446438 3275163606 4107603335 1163531501 2850285829 4243563512 1735328473 2368359562
        4294588738 2272392833 1839030562 4259657740 2763975236 1272893353 4139469664 3200236656
        0681279174 3936430074 3572445317 0076029189 3654602809 3873151461 0530742520 3299628645
        4096336452 1126891415 2878612391 4237533241 1700485571 2399980690 4293915773 2240044497
        1873313359 4264355552 2734768916 1309151649 4149444226 3174756917 0718787259 3951481745
       )
    )
  )
  (setq r
    '(
      07 12 17 22  07 12 17 22  07 12 17 22  07 12 17 22
      05 09 14 20  05 09 14 20  05 09 14 20  05 09 14 20
      04 11 16 23  04 11 16 23  04 11 16 23  04 11 16 23
      06 10 15 21  06 10 15 21  06 10 15 21  06 10 15 21
    )
  )
  (setq h
    (mapcar
      '(lambda (x) (md5:int->bits x 32))
      '(
        1732584193
        4023233417
        2562383102
        0271733878
      )
    )
  )
  (setq l (cons 128 (reverse lst)))
  (repeat (rem (+ 64 (- 56 (rem (length l) 64))) 64) (setq l (cons 0 l)))
  (setq l (append (reverse l) (md5:bits->bytes (md5:int->bits (* 8 (length lst)) 64))))
  (repeat (/ (length l) 64)
    (repeat 16
      (setq w (cons (md5:bytes->bits (mapcar '+ l '(0 0 0 0))) w)
            l (cddddr l)
      )
    )
    (setq w (reverse w))
    (mapcar 'set '(a b c d) h)
    (setq i 0)
    (repeat 64
      (cond
        (
         (< i 16)
         (setq f (mapcar 'logior (mapcar 'logand b c)(mapcar 'logand (mapcar '(lambda (a)(+ 2 (~ a))) b) d))
               g i
         )
        )
        (
         (< i 32)
         (setq f (mapcar 'logior (mapcar 'logand d b) (mapcar 'logand (mapcar '(lambda ( a ) (+ 2 (~ a))) d) c))
               g (rem (1+ (* 5 i)) 16)
         )
        )
        (
         (< i 48)
         (setq f (mapcar '(lambda ( a b c ) (boole 6 a b c)) b c d)
               g (rem (+ 5 (* 3 i)) 16)
         )
        )
        (
         (setq f (mapcar '(lambda ( a b ) (boole 6 a b)) c (mapcar 'logior b (mapcar '(lambda ( a ) (+ 2 (~ a))) d)))
               g (rem (* 7 i) 16)
         )
        )
      )
      (mapcar 'set '(d c a b i)
              (list c b d
                    (md5:uint32_+ b
                      (md5:leftrotate
                        (md5:uint32_+
                          (md5:uint32_+
                            (md5:uint32_+ a f)
                            (nth i k)
                          )
                          (nth g w)
                        )
                        (nth i r)
                      )
                    )
                    (1+ i)
               )
      )
    )
    (setq h (mapcar 'md5:uint32_+ h (list a b c d))
          w nil
    )
  )
  (apply 'strcat (mapcar 'md5:byte->hex (apply 'append (mapcar 'md5:bits->bytes h))))
)

(defun StringToAscii (String / positioni YPOutString)
  (setq positioni -1)
  (repeat (strlen string)
    (setq YPOutString (append YPOutString (list (vl-string-elt string (setq positioni (+ positioni 1))))))
  )
  YPOutString
)

(defun md5:int->bits (n b / l x)
  (repeat b (setq l (cons 0 l)))
  (foreach x (vl-string->list (rtos n 2 0))
    (setq x (- x 48)
          l (mapcar '(lambda ( a ) (setq a (+ (* a 10) x) x (/ a 2)) (rem a 2)) l)
    )
  )
  (reverse l)
)

(defun md5:bits->int (l)
  (
    (lambda (f)(f (reverse l)))
    (lambda (l) (if l (+ (* 2.0 (f (cdr l))) (car l)) 0))
  )
)

(defun md5:bits->bytes (l / b r)
  (repeat (/ (length l) 8)
    (repeat 8
      (setq b (cons (car l) b)
            l (cdr l)
      )
    )
    (setq r (cons (fix (+ 1e-8 (md5:bits->int (reverse b)))) r)
          b nil
    )
  )
  r
)

(defun md5:bytes->bits (l)
  (apply 'append (mapcar '(lambda ( b ) (md5:int->bits b 8)) (reverse l)))
)

(defun md5:int->char (n)
  (chr (+ n (if (< n 10) 48 55)))
)

(defun md5:byte->hex (x)
  (strcat (md5:int->char (/ x 16)) (md5:int->char (rem x 16)))
)

(defun md5:leftrotate (l x)
  (repeat x (setq l (append (cdr l) (list (car l)))))
)

(defun md5:uint32_+ (bl1 bl2 / r)
  (setq r 0)
  (reverse
    (mapcar
      '(lambda (a b c / x)
         (setq x (boole 6 (boole 6 a b) r)
               r (boole 7 (boole 1 a b) (boole 1 a r) (boole 1 b r))
         )
         x
      )
      (append (reverse bl1) (md5:uint32_0))
      (append (reverse bl2) (md5:uint32_0))
      (md5:uint32_0)
    )
  )
)

(defun md5:uint32_0 (/ l)
  (repeat 32 (setq l (cons 0 l)))
  (eval (list 'defun 'md5:uint32_0 nil (list 'quote l)))
  (md5:uint32_0)
)
429014673 2021-9-12 16:08
风版,你那个MD5应该有发表吗?我想看看
自贡黄明儒 2017-1-4 07:59
cabinsummer: 看到你最近的帖子都是冷门的,连JavaScript都用上了。不知对LISP控制浏览器有何研究?我最近在学这方面的
我现在有空时学习excel的VBA,excel Home论坛上有网抓,正则,字典都是重要内容。对于浏览器太深,要学的东西太多,故没什么研究。我还在学习基础的,在excel中编一些可用的程序。
lingfeng82 2015-7-11 08:49
不好意思,我刷下金币哈![em01]
lingfeng82 2015-7-7 11:16
缺金币买资料,刷一下金币抱歉哈亲
自贡黄明儒 2013-11-9 13:33
希望你再出江湖!!!
自贡黄明儒 2012-9-28 10:51
风大侠的宝贝都是很实用的哈!
yjr111 2012-4-13 21:12
风大侠的宝贝俺都收藏起来了!
snddd2000 2012-4-13 09:40
版主请教个问题,你有没有做过图表数字化的事情。就像机械里面有不少经验曲线,每次都要查图,对上去找值,这种曲线用函数没法精确拟合,用插值法误差也不小。请问有什么思路吗?
yarp 2012-2-10 11:33
我看你给我的回复,我还是有点不大明白你的用意,是想讨论有没有可能写一个那样的功能吗?
adslwang 2012-2-2 11:36
风大侠  明经发佈可以麻烦您做个繁体版的查DXF.vlx  造福小弟嘛!  拜託您了......
mccad 2012-1-2 18:12
cabinsummer: 聊天室的功能好像不行啊,总是不停的跳出一大段代码,点掉后又出来。
聊天室我重新找一个,这个原来是正常的,后来就不正常了
邹锋 2011-12-27 09:37
没看到你的日记写有书名的?
LLXXZZ 2011-12-9 21:03
道德与良心
写的很对.但我不知道为什么我不能评论你的这个好文章.
highflybir 2011-11-11 21:47
cabinsummer: 大师,我的圆周率计算在4000位时出错了,能帮我分析一下吗?
这些天我有些事情忙不过来,不好意思。
mccad 2011-11-8 22:55
已经解决了你的问题,现在页面有直到某页的功能了
mccad 2011-11-8 22:11
cabinsummer: 建议在论坛中有直达第X页的功能,现在AutoLISP/Visual LISP 编程技术已经600多页了,很想找一些沉到底的精华帖子,没有目的只是浏览,但是让我点几百下去搜索实在 ...
我想办法解决吧
cabinsummer 2011-11-2 21:05
原来如彼!!!!
mccad 2011-11-2 20:18
cabinsummer: 混了近两个月,得到140个明经币。请问明总如何得到威望和通道币?
威望已经不做为论坛的币种使用了,因为它 的功能与明经币有重合。
通道币只做为论坛的交易货币,可以充值和提现。所以只能通过充值。
sachindkini 2011-9-16 02:12
cabinsummer: Oh, That's a good tool
yes sir,
good tool
how can made it. any idea
12下一页

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-4-27 17:57 , Processed in 0.122362 second(s), 9 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部