- 博客(0)
- 资源 (3)
- 收藏
- 关注
Delphi 版 SM3 & SM4 加密实现代码
(原创资源)
SM4 加密、解密库。
SM3 杂凑算法编码。
适用 Delphi 版本:Delpih 7, 2010
(仅在这两个版本下测试过,使用过程尽量考虑兼容。因此其他版本的兼容必问题不大)
关于国密算法,网上基本只有 C/Java 的实现。Delphi 唯一能找到的版本,还是一个网友实现的不完整版本。
仅有 SM4 ECB 模式,CBC 模式的实现还是错误的。为此,我们只好让部门的小美女完整实现了下列功能:
SM4 ECB 模式(标准模式)
SM4 CBC 模式(密文分组链接方式)
SM3 国标 hash 算法
在整个过程经过了一周时间,过程中也是遇坑无数。所以完成后把源码分享出来,希望其他同学不用再从轮子
做起,少经历一些波折。
如果在使用过程中发现这个库有所不足,还望指出纠正。问题可以发送至邮箱:delphi2006@163.com
2018-12-30
Java SM3&SM4; 脱坑版
SM3 & SM4 (Java)脱坑版
最近在开发涉及国密加密、解决、Hash 算法的库。在 优快云 上,已经有人发布了
正确的实现代码,但是里面有很多的坑(谁用谁知道)。导致每使用时需要对国密有
较深入的了解。因此我们部门小美女特意制作了脱坑版,这个版本统一并简化了调用
接口,使接口简单易于使用。
主要包括的坑:
★ 字符集不确定,在内部来回转换。
★ 编码问题 byte/hex/base64 不明。(甚至出现传入 bytes 传出 hex 的情况)
新的模式只需要以下几个函数即可,无需知道内部工作原理:
SMUtils.SM3_calcBuf(byte[] buf);
SMUtils.SM4_ECB_encodeBytes(byte[] inBuf, byte[] password);
SMUtils.SM4_ECB_decodeBytes(byte[] inBuf, byte[] password);
SMUtils.SM4_CBC_encodeBytes(byte[] inBuf, byte[] password, byte[] IV);
SMUtils.SM4_CBC_decodeBytes(byte[] inBuf, byte[] password, byte[] IV);
苏州沈苏自动化技术开发有限公司(金苗部),于 2019-01-02。邮箱:delphi2006@163.com
2019-01-02
Delphi SuperObject 解决节点乱序问题
SuperObject Delphi 的 JSON 操作类改造 - 关于属性顺序的问题。(原创资源)
Delphi 的 ISuperObject 属性顺序为随机。但是很多时候,是需要按加入顺序进行读取。我也看了网上很多人有类似需求。也有人问过原作者,作者答复为:JSON协议规定为无序。看了我真是无语。
也看过网上一些人自己的修改,但是修改后有两个问题:
1. 性能急剧下降。原作者是用二叉树对性能做了极大的优化。但是网上修改的方法性能不行。
2. 属性数大于 32 时会出错。(原来用的是二叉树,修改后部分算法未修改,导致此问题)。
我采用的是重写遍历器的方法,和原版性能接近。
* 执行 500*500 数据的节点变更后,性能和原版差别不太大。
*
* 原始性能 0.280 秒
* 旧的稳定改版性能 15.774 秒
* 新的稳定改版性能 0.535 秒
*
* 性能是原版的 1.9 倍左右。而之前将二叉树变为链表的方法,导致性能变为 56 分之一。
* 温涛,于 2018-10-26。邮箱 delphi2006@163.com
2018-11-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人