作者:创世魂
● 帮助说明
本教程针对各种加解密进行了讲解说明。
所有方法均位于:“数据处理支持1”模块中。
● 准备工作
界面准备:
准备如下图所示的界面。
依次为:“编辑框1”,“按钮1”,“编辑框2”,“按钮2”和“编辑框3”。
● AES加密
注意:如果要和其它编程语言通用,请使用“AES加解密类”
“AES加密”帮助文档:
“AES加密”中文全称“高级加密标准”,在密码学中又称为“Rijndael加密法”。
加解密过程通过相同的密码来进行。
参数1:填写要加密的字节数组。
参数2:填写加密密码。
参数3、4:谨慎使用,如果不会操作保留空对象即可,否则可能会导致加密后无法解密等情况发生。
注意:加密后会返回“字节数组”,可通过“Base64类”进行编码后显示成文本。
或者通过“字节数组到十六进制文本()”方法进行转换成文本显示。
“AES解密”帮助文档:
通过本方法可对AES进行解密,务必保证“参数2”填写的密码和“加密密码”一致。
解密失败返回空对象。
代码编写如下图:
“按钮1”被点击:
1、定义类型为“字节[]”的变量,调用“AES加密()”方法,加密“编辑框1”的内容,赋值给定义的变量。
2、调用“字节数组到十六进制文本()”方法,将加密后的数据转换为文本显示。
“按钮2”被点击:
1、因采用的十六进制编码,首先需要调用“十六进制文本到字节数组()”方法进行解码。
2、将解码后的字节变量,放入“AES解密()”方法的参数1中。
3、最后调用“字节数组到文本()”才能完成解密。
运行效果如下图(GIF):
● DES加密/解密
帮助说明:
以上两个加解密算法和“AES加密/解密”用法一致,都是通过相同密码进行,但内部算法不同。
“DES”中文全称为“数据加密标准”,是一种使用密钥加密的块算法。
“RC4”中文全称为“流加密算法”,曾经是TLS(安全传输层协议)采用的算法之一。
代码编写如下图:
将“AES加密/解密”修改成“DES加密/解密”或“RC4加密/解密”即可。
运行结果如下图:
左图:DES加密/解密结果。
右图:RC4加密/解密结果。
● RSA加密
帮助说明:
RSA加密算法是一种非对称加密算法,即加密和解密需要不同的秘钥来进行,分为公钥和私钥。
如果使用“公钥”加密,必须要用“私钥”才能解密。
相反如果使用“私钥”加密,必须要用“公钥”才能解密。
首先讲解如何生成“公钥”和“私钥”。
“生成RSA密钥对”帮助文档:
通过本方法可生成RSA算法所需要的“公钥和私钥”信息,这些信息存储在“秘钥对”中。
参数“秘钥位”只能填写“1024、2048、4096”。
“秘钥对”帮助文档:
打开返回对象后,可看到当前对象只有两个读属性,分别为“公钥和私钥”。
点击对象属性可查看属性详细信息。
“公/私钥”帮助文档:
公钥:返回“公钥类”对象。
私钥:返回“私钥类”对象。
无论是“私钥类”还是“私钥类”,打开帮助文档都可以看到“取秘钥编码数据()”方法。
通过此方法可以将“公/私钥”转换成字节数组。
“公/私钥”代码编写如下图:
1、定义类型为“秘钥对”的变量,调用“生成RSA秘钥对()”方法赋值给此变量。
2、分别通过“公/私钥”读属性,继续调用“取秘钥编码数据()”取出“公/私钥”字节数据。
3、最后必须通过“Base64编码至文本()”方法,将其转换为文本显示。
“公/私钥”运行效果如下图:
将生成的公钥和私钥文本存储起来备用。
“RSA加/解密”代码编写如下图:
“按钮1”被点击:
1、定义类型为“公钥类”的变量,勾选参考。
2、定义类型为“文本型”的变量,将准备好的“公钥文本”填入初始值中。
3、调用“公钥类.创建自文本()”方法,创建公钥对象赋值给定义的变量。
4、调用“RSA加密()”方法,通过“公钥对象”进行加密,加密后赋值给“加密结果”字节数组。
5、最后通过“字节数组到十六进制文本()”方法,将其转换成文本数据显示在“编辑框2”中。
“按钮2”被点击:
1、解密操作和加密类似,首先通过“私钥文本”创建“私钥类”对象。
2、调用“RSA解密()”方法,通过私钥对象,对“编辑框2”的内容进行解密。
3、利用“字节数组到文本()”方法可将解密结果转换成文本显示出来。
“RSA加/解密”运行效果如下图(GIF):
● 数字签名
“数字签名”帮助文档:
通过本方法可将指定字节数组,进行签名(加密),返回签名后数据。
参数1:提供要签名(加密)的数据。
参数2:提供公钥或私钥对象,如果签名用公钥,验证签名则需要使用私钥。
参数3:提供摘要算法,签名和验证务必保持一致,否则会验证失败。
“签名验证”帮助文档:
通过本方法可验证“签名后数据”与“原数据”是否一致。
参数1:提供要验证的字节数组。
参数2:提供“数字签名()”方法返回的签名文本。
参数3:提供公钥或私钥对象,如果签名用公钥,验证签名则需要使用私钥。。
参数4:提供摘要算法,务必和“数字签名()”方法一致,否则会验证失败。。
代码编写如下图:
“按钮1”被点击:
1、通过“公钥文本”创建公钥类对象。
2、通过创建的“公钥对象”,将“编辑框1”的内容进行签名后显示在“编辑框2”的内容。
“按钮2”被点击:
1、通过“私钥文本”创建私钥类对象。
2、创建的“私钥对象”对比“编辑框2”的内容和“编辑框1”是否相等。
运行结果如下图: