Previous topicNext topic
Help > 开发指南 > 编程基础 > 数据处理 >
加密解密

以下所有的加密解密都是放在Crypt这个静态类下面的静态方法。我们想用的话就直接使用即可。

Name Description
Base64StringToBytes 根据Base64字符串返回一个Byte数组。
BytesToBase64String 根据一个Byte数组返回一个Base64字符串。
BytesToFile Byte数组转换成文件。
BytesToHexString Byte数组转十六进制字符。
CRC16 返回字符串的CRC16验证码。
DateToJavaScriptDateTime .Net日期转换成JavaScript日期。
DecryptDataAES  
DecryptFileDES DES解密文件。
DecryptText DES解密文本
DecryptTextAES AES解密文本。
DecryptTextDES(String, String) DES解密文本。
DecryptTextDES(String, String, String) DES解密文本。
DecryptTextRSA 用私钥解密文本。
EncryptDataAES  
EncryptFileDES DES加密文件。
EncryptText DES加密文本.两个密钥,返回的文本转Base64字符串。
EncryptTextAES AES加密文本。
EncryptTextDES(String, String) DES加密文本。返回的文本转Base64字符串。
EncryptTextDES(String, String, String) DES加密文本。返回的文本没有转Base64字符串。
EncryptTextRSA 用公钥加密文本。
FileToBytes 将文件转换成Byte数组。
GenerateRSAKeyString 生成RSA的一对密钥。
GetFileFromBase64String 从Base64字符串获得一个文件。
GetFileFromHexString 从十六进制字符串获得一个文件。
GetFileToBase64String 返回文件的Base64字符串。
GetFileToHexString 返回文件的十六进制字符串。
GetTextFromBase64String 从Base64字符串获得一个文本。
GetTextFromHexString 从十六进制字符串获得一个文本。
GetTextToBase64String 返回文本的Base64字符串。
GetTextToHexString 返回文本的十六进制字符串。
HexStringToBytes 将十六进制字符转化成字节数组。
JavaScriptDateTimeToDate JavaScript日期转换成.Net日期。
MD5ForFile 返回文件的MD5值。
MD5ForString 返回指定文本的MD5字符串。
ToHMACSHA1 将字符串转换成HMACSHA1

Vb.Net
Dim str As String="要加密的文本信息"
'常规的用法就两种
'加密文本,使用两个密钥。
Dim strEncrypt As String=Crypt.EncryptText(str,"key1abcd","key2abcd")
Proj.MsgDebug.Add(strEncrypt)  '返回结果:B1scRyT1ealSuvqY5rVeuD3M/77F8+P+
'解密文本,使用加密时相对应的两个密钥
Dim strResult As String=Crypt.DecryptText(strEncrypt,"key1abcd","key2abcd")
Proj.MsgDebug.Add(strResult)  '返回结果:要加密的文本信息

'如果只有Key1的话,解密出来的文本一部分乱码
strResult=Crypt.DecryptText(strEncrypt,"key1abcd","")
Proj.MsgDebug.Add(strResult)  '返回结果:⼿귚שׂ䣡文本信息

C#
string str = "要加密的文本信息";
// 常规的用法就两种
// 加密文本,使用两个密钥。
string strEncrypt = Crypt.EncryptText(str, "key1abcd", "key2abcd");
Proj.MsgDebug.Add(strEncrypt);
// 解密文本,使用加密时相对应的两个密钥
string strResult = Crypt.DecryptText(strEncrypt, "key1abcd", "key2abcd");
Proj.MsgDebug.Add(strResult);

// 如果只有Key1的话,解密出来的文本一部分乱码
strResult = Crypt.DecryptText(strEncrypt, "key1abcd", "");
Proj.MsgDebug.Add(strResult);

我们其他方法基本靠智能提示中的提示文本就可以知道如何使用了。

我们再演示一下RSA加密解密的示例,做个下面这样的窗口,然后按钮的代码按照下面的代码写。

Vb.Net
Private Sub cmdNewKeys_Click(ByVal sender As Object, ByVal e As C1.Win.C1Command.ClickEventArgs)
    Dim strPublicKey As String = ""
    Dim strPrivateKey As String = ""
    Crypt.GenerateRSAKeyString(strPublicKey, strPrivateKey)
    txtPublicKey.Value = strPublicKey
    txtPrivateKey.Value = strPrivateKey
End Sub

Private Sub cmdDecrypt_Click(ByVal sender As Object, ByVal e As C1.Win.C1Command.ClickEventArgs)
    If String.IsNullOrEmpty(txtPrivateKey.Text) Then
        MessageBox.Show("没有解密用的私钥,无法进行解密!")
        Return
    End If

    If String.IsNullOrEmpty(txtEncryptString.Text) Then
        MessageBox.Show("没有可用来解密的文本!")
        Return
    End If

    Try
        txtDecryptString.Value = Crypt.DecryptTextRSA(txtEncryptString.Text, txtPrivateKey.Text)
    Catch ex As Exception
        UnhandledExceptionManager.ShowAndSaveLog(ex)
    End Try
End Sub

Private Sub cmdEncrypt_Click(ByVal sender As Object, ByVal e As C1.Win.C1Command.ClickEventArgs)
    If String.IsNullOrEmpty(txtPublicKey.Text) Then
        MessageBox.Show("没有解密用的么钥,无法进行加密!")
        Return
    End If

    If String.IsNullOrEmpty(txtDecryptString.Text) Then
        MessageBox.Show("没有可用来加密的文本!")
        Return
    End If

    Try
        txtEncryptString.Value = Crypt.EncryptTextRSA(txtDecryptString.Text, txtPublicKey.Text)
    Catch ex As Exception
        UnhandledExceptionManager.ShowAndSaveLog(ex)
    End Try
End Sub

C#
private void cmdNewKeys_Click(object sender, C1.Win.C1Command.ClickEventArgs e)
{
    string strPublicKey="";
    string strPrivateKey="";
    Crypt.GenerateRSAKeyString(ref strPublicKey, ref strPrivateKey);
    txtPublicKey.Value = strPublicKey;
    txtPrivateKey.Value = strPrivateKey;
}

private void cmdDecrypt_Click(object sender, C1.Win.C1Command.ClickEventArgs e)
{
    if (string.IsNullOrEmpty(txtPrivateKey.Text))
    {
        MessageBox.Show("没有解密用的私钥,无法进行解密!");
        return;
    }
    if (string.IsNullOrEmpty(txtEncryptString.Text))
    {
        MessageBox.Show("没有可用来解密的文本!");
        return;
    }
    try
    {
        txtDecryptString.Value = Crypt.DecryptTextRSA(txtEncryptString.Text, txtPrivateKey.Text);
    }
    catch (Exception ex)
    {
        UnhandledExceptionManager.ShowAndSaveLog(ex);
    }            
}

private void cmdEncrypt_Click(object sender, C1.Win.C1Command.ClickEventArgs e)
{
    if (string.IsNullOrEmpty(txtPublicKey.Text))
    {
        MessageBox.Show("没有解密用的么钥,无法进行加密!");
        return;
    }
    if (string.IsNullOrEmpty(txtDecryptString.Text))
    {
        MessageBox.Show("没有可用来加密的文本!");
        return;
    }
    try
    {
        txtEncryptString.Value = Crypt.EncryptTextRSA(txtDecryptString.Text, txtPublicKey.Text);
    }
    catch (Exception ex)
    {
        UnhandledExceptionManager.ShowAndSaveLog(ex);
    }
    
}