前言
- 密码技术包罗甚广,如常见的对称加密AES、DES,非对称加密RSA等。在每一种密码技术之下,往往又分为不同的格式、模式、填充、哈希算法等等。一时难以完全涵盖,因此本篇博文及配套资源将来可能会持续更新。若现有内容未能覆盖您的需求,欢迎留言,“定向”催更。
- 目前Crypto工具包提供2种密码技术:AES和RSA,具体功能包括:
-
AES
- 设置key(128、192、256 bits)与iv
- 加密与解密
- 5种模式:ECB、CBC、CTR、CFB、OFB
- 6种填充:NO_PADDING、ZEROS_PADDING、PKCS_PADDING、ONE_AND_ZEROS、ANSI X9.23、ISO 10126 RSA
- 生成随机密钥对
- 保存、导入密钥文件(PEM格式,支持PKCS1和PKCS8)
- 加密与解密(3种填充:PKCS1v15、OAEP-SHA1、OAEP-SHA256)
- 签名与验签(2种填充:PKCS1v15、PSS;2种哈希:SHA1、SHA256)
- 本工具包函数输入输出的密文(cipher)和签名(signature)均为原始二进制字符串。若您需要base64编码、解码操作,可以使用LabVIEW自带的VI,比如位于:LabVIEW 20XX\vi.lib\httpClient\ 路径下的Base64Encode.vi和Base64Decode.vi
安装
获取本文绑定资源,双击.vip安装包,将在VIPM环境下进行安装。
系统要求:Windows 64位,LabVIEW>=2018 64位。
函数选板
安装完成后,工具包位于:函数选板>>Addons>>Molitec>>Crypto
目前包含2个类:AES 和 RSA,各包含若干函数。
范例与帮助
在LabVIEW下,点击菜单栏:帮助(Help)>>查找范例(Find Examples)
在窗口左侧点击目录结构(Directory Structure),右侧找到并展开Molitec目录。
Crypto工具包的范例位于Crypto子目录下:
范例1:AES加密与解密
双击打开example_AES_encrypt_and_decrypt.vi
如下图,AES 工具包采用 “面向对象” 的设计思想。一次完整的调用从初始化AES对象开始,到释放AES对象结束。中间可以插入任意次数的设置密钥、加密、解密函数。
范例2:RSA生成、保存、导入密钥对
双击打开example_RSA_keypair.vi
如下图,RSA 工具包同样采用 “面向对象” 的设计思想。RSA属于非对称加密,密钥分为公钥和私钥。
调用保存或导入函数时,您也可以选择不连接公钥或私钥路径,函数会忽略对应密钥文件的读写操作。
特别:
如果调用导入密钥函数时,只连接私钥路径、不连接公钥路径,函数依然可以同时导入公钥和私钥,因为私钥PEM文件中已经包含了配对的公钥信息。另外,导入函数可以自适应PKCS1和PKCS8格式。
PEM密钥文件格式如下:(以PKCS1格式的私钥为例)
范例3:RSA公钥加密、私钥解密
双击打开example_RSA_encrypt_and_decrypt.vi
加密需要公钥、解密需要私钥,使用函数时,请确保对应密钥已经生成或导入。
范例4:RSA私钥签名、公钥验签
双击打开example_RSA_sign_and_verify.vi
签名需要私钥,验签需要公钥,使用函数时,请确保对应密钥已经生成或导入。
帮助文档
函数配有详细帮助文档,对函数点右键>>Help,打开对应的帮助文档。
总结
本系列博文,将为大家带来多种基于LabVIEW的工具包,均为【秣厉科技】原创,欢迎大家下载体验!
各位看官有什么想法、建议、吐槽、批评,或新奇的需求,也欢迎留言讨论。更多内容将持续奉上。
秣厉,取自秣马厉兵。敝姓马,寓意从此自立门户,一边养活自己,一边打磨技术。