加解密操作实例讲解

作者:创世魂

 

● 帮助说明

本教程针对各种加解密进行了讲解说明。

所有方法均位于:“数据处理支持1”模块中。

 

 

一、加解密类

 

● 准备工作

 

界面准备:

准备如下图所示的界面。

依次为:“编辑框1”“按钮1”“编辑框2”“按钮2”“编辑框3”

 

● AES加密
● 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加密/解密
● RC4加密/解密

 

帮助说明:

以上两个加解密算法和“AES加密/解密”用法一致,都是通过相同密码进行,但内部算法不同。

“DES”中文全称为“数据加密标准”,是一种使用密钥加密的块算法。

“RC4”中文全称为“流加密算法”,曾经是TLS(安全传输层协议)采用的算法之一。

 

代码编写如下图:

“AES加密/解密”修改成“DES加密/解密”“RC4加密/解密”即可。

 

运行结果如下图:

左图:DES加密/解密结果。

右图:RC4加密/解密结果。

 

● RSA加密
● 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”是否相等。

 

运行结果如下图: