DEC加密解密算法速度还是挺快的

用VB.NET,编码方式选择的是UTF-8;

    ' 加密方法
    Public Shared Function Encrypt(ByVal pToEncrypt As String, ByVal sKey As String) As String
        Dim des As New DESCryptoServiceProvider()
        Dim inputByteArray() As Byte
        inputByteArray = Encoding.UTF8.GetBytes(pToEncrypt)
        ''建立加密对象的密钥和偏移量  
        ''原文使用ASCIIEncoding.ASCII方法的GetBytes方法  
        ''使得输入密码必须输入英文文本  
        des.Key = ASCIIEncoding.ASCII.GetBytes(sKey)
        des.IV = ASCIIEncoding.ASCII.GetBytes(sKey)
        ''写二进制数组到加密流  
        ''(把内存流中的内容全部写入)  
        Dim ms As New System.IO.MemoryStream()
        Dim cs As New CryptoStream(ms, des.CreateEncryptor, CryptoStreamMode.Write)
        ''写二进制数组到加密流  
        ''(把内存流中的内容全部写入)  
        cs.Write(inputByteArray, 0, inputByteArray.Length)
        cs.FlushFinalBlock()
        ''建立输出字符串  
        Dim ret As New StringBuilder()
        Dim b As Byte
        For Each b In ms.ToArray()
            ret.AppendFormat("{0:X2}", b)
        Next
        Return ret.ToString()
    End Function

    ' 解密方法
    Public Shared Function Decrypt(ByVal pToDecrypt As String, ByVal sKey As String) As String
        Dim des As New DESCryptoServiceProvider()
        ''把字符串放入byte数组  
        Dim len As Integer
        len = pToDecrypt.Length / 2 - 1
        Dim inputByteArray(len) As Byte
        Dim x, i As Integer
        For x = 0 To len
            i = Convert.ToInt32(pToDecrypt.Substring(x * 2, 2), 16)
            inputByteArray(x) = CType(i, Byte)
        Next
        ''建立加密对象的密钥和偏移量,此值重要,不能修改  
        des.Key = ASCIIEncoding.ASCII.GetBytes(sKey)
        des.IV = ASCIIEncoding.ASCII.GetBytes(sKey)
        Dim ms As New System.IO.MemoryStream()
        Dim cs As New CryptoStream(ms, des.CreateDecryptor, CryptoStreamMode.Write)
        cs.Write(inputByteArray, 0, inputByteArray.Length)
        cs.FlushFinalBlock()
        Return Encoding.UTF8.GetString(ms.ToArray)
    End Function


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用MATLAB实现AES加密和解密算法的示例代码: ```matlab % AES加密解密算法示例代码 密钥长度为128位,分组长度为128位 % 明文和密文均为16字节长度的字符串 % 加密函数 function ciphertext = aes_encrypt(plaintext, key) % 将明文和密钥转换为字节数组 plaintext_bytes = uint8(plaintext); key_bytes = uint8(key); % 创建AES加密器对象 aes_enc = aes_ctr(key_bytes, 'BlockSize', 16); % 加密明文 ciphertext_bytes = step(aes_enc, plaintext_bytes); % 将密文转换为字符串 ciphertext = char(ciphertext_bytes)'; end % 解密函数 function plaintext = aes_decrypt(ciphertext, key) % 将密文和密钥转换为字节数组 ciphertext_bytes = uint8(ciphertext); key_bytes = uint8(key); % 创建AES解密器对象 aes_dec = aes_ctr(key_bytes, 'BlockSize', 16); % 解密密文 plaintext_bytes = step(aes_dec, ciphertext_bytes); % 将明文转换为字符串 plaintext = char(plaintext_bytes)'; end % 示例代码 plaintext = 'Hello, AES!'; key = '0123456789abcdef'; ciphertext = aes_encrypt(plaintext, key); disp(['明文:', plaintext]); disp(['密钥:', key]); disp(['密文:', ciphertext]); disp(['解密后的明文:', aes_decrypt(ciphertext, key)]); ``` 该示例代码实现了AES加密和解密算法,使用了MATLAB内置的AES加密器对象和AES解密器对象。其中,加密函数`aes_encrypt`接受明文和密钥作为输入,返回密文;解密函数`aes_decrypt`接受密文和密钥作为输入,返回明文。示例代码还演示了如何使用这两个函数进行加密和解密。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值