【密码学工具箱】一个密码学学习辅助软件

admin 2022年11月20日00:07:45评论80 views字数 2284阅读7分36秒阅读模式

密码学工具箱

【密码学工具箱】一个密码学学习辅助软件

在学习密码学的过程当中,大家往往会遇到这样或者那样的问题,相信下面的一些疑惑大多数读者都遇到过。

  • 为什么在Java当中byte有负数,但是到了Python当中他就是正数了

  • 为什么js当中的md5给的某些常量会是负数

  • 然后想去实验某些密码学算法的时候,有很多组合的算法,如何直观的看出来执行的流程。

  • 。。。

目前可以计算密码学算法的库或者在线以及离线的工具有很多,那么我为什么还要自己写一个呢,没错,就是因为我闲的(感觉那些在线的工具用起来总会有这样或者那样的不爽)因此呢,算了还不如我自己写一个玩玩。

写这个工具箱的初衷呢,并不是说,我希望去直接调用那些算法,因为我这要调用的话,直接写程序跑一下,来的更快,我希望借助这个工具箱,辅助一下我的其他的文章,来更好的让读者来理解密码学当中的算法的一个过程(当然,这块这一版还没实现),接下来看我心情维护吧。

当前版本功能

有符号数字转换

我们先来看一下js当中的md5当中的一段算法,这里我随机找了一个库,没有精挑细选啥哈,就看搜出来的第一个吧。

【密码学工具箱】一个密码学学习辅助软件
;(function (${
  // ...
  'use strict'
  /**
   * Calculate the MD5 of an array of little-endian words, and a bit length.
   *
   * @param {Array} x Array of little-endian words
   * @param {number} len Bit length
   * @returns {Array<number>} MD5 Array
   */

  function binlMD5(x, len{
    /* append padding */
    x[len >> 5] |= 0x80 << len % 32
    x[(((len + 64) >>> 9) << 4) + 14] = len

    var i
    var olda
    var oldb
    var oldc
    var oldd
    var a = 1732584193
    var b = -271733879
    var c = -1732584194
    var d = 271733878
    
    // ...
}

看过我之前文章的读者,或者了解过md5的读者应该知道,对于md5的初始化向量是

word A: 01 23 45 67
word B: 89 ab cd ef
word C: fe dc ba 98
word D: 76 54 32 10

那么这里看到这个实现,似乎和rfc当中的不太一样,咱们在学习的过程当中,用我这个工具转化一下。

【密码学工具箱】一个密码学学习辅助软件
变换演示

这样,我们来看最终变换之后的结果,是不是就和文档保持一致了,好了,这是第一个用法哈,对于前面遇到的两个问题,也可以采用同样的方法来解决。以后再也不用担心有人问我了,希望可以这样,自己动手风衣足食吧。

算法的链式调用

当我们在学习密码学算法的时候,很多情况下会遇到组合的算法,因为加密之后大概率不会是可见字符,或者是对于哈希函数的输出结果,在大多数情况下也不会是可见字符,我们常见的哈希值的结果是base16或者hex编码之后的结果,如果我们想要转换为其他的形式,比如base64,用原来的工具,我们可能需要再打开一个新的工具,然后复制过去来实现这个转换,那么对于我这个工具箱呢,只需要在加几个输出节点就完事了。

【密码学工具箱】一个密码学学习辅助软件
连续调用演示

如果你感觉这个太长了,同样的可以隐藏掉中间的节点。

【密码学工具箱】一个密码学学习辅助软件
折叠中间的节点

好了,当前版本的工具箱实际上功能就这么多,基本上我也介绍完成了。

温馨提示

因为我个人的开发水平有限,因此这个工具箱难免会出现这样或者那样的问题,如果发现问题,可以考虑联系我,如果确定是问题,不是特性,会考虑在后面给修复,也不一定,没准这个就变特性或者目前我的能力修不了,然后读者如果有什么好的想法,也可以提给我,下次没准就给加上了,当然这些想法仅限在密码学学习的相关功能上。

然后,这个工具箱,本身我搞出来的目的就是用来辅助密码学的学习,因此,仅限于密码学的学习使用,按道理,这个应该是不会能用到某些用途的地方吧,仅限于合法使用,如果不合规用途产生的影响和本软件的开发者无关,手动狗头一下。

下载链接

因为我这测试的设备有限,虽然说是flutter是支持win和mac以及Linux的,我这也是简单试了下,如果说您的系统无法运行,建议您这边换系统,因为我也适配不了,目前测试win10以上以及macos是可用的。

链接: https://pan.baidu.com/s/1W4iVPY9zDu5nRYGmZUBudA 提取码: 1387

最后,还是老样子,这个工具箱呢,同样是佛系更新,溜了溜了。

参考资料

  • https://github.com/blueimp/JavaScript-MD5[1]

  • https://www.rfc-editor.org/rfc/rfc1321[2]

Reference

[1]

https://github.com/blueimp/JavaScript-MD5: https://github.com/blueimp/JavaScript-MD5

[2]

https://www.rfc-editor.org/rfc/rfc1321: https://www.rfc-editor.org/rfc/rfc1321


原文始发于微信公众号(Coder小Q):【密码学工具箱】一个密码学学习辅助软件

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年11月20日00:07:45
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【密码学工具箱】一个密码学学习辅助软件http://cn-sec.com/archives/1418668.html

发表评论

匿名网友 填写信息