| 网站首页 | VB.Net实例分析 | .Net技术文摘 | 下载中心 | VB.Net书籍笔记 | .Net源码 | VBS脚本与组件调用 | Windows2008技术文摘 | 给我们留言 | 
最新公告:

  没有公告

您现在的位置: 乐博网 >> VB.Net实例分析 >> 加密压缩编程 >> 实例分析正文
最新推荐 更多内容
AES加密的实例
AES加密的实例
作者:Ilu    来源:乐博网整理     更新时间:2009-9-3

AES加密的代码如下:

  1. Imports System.ComponentModel
  2. Imports System.Security.Cryptography
  3. Imports System.Text
  4. Imports System.IO
  5. '更多.net源代码和教程,请关注乐博网www.lob.cn

vb.net Code:

  1. #Region " AES Encryption Algorithm "
  2.     Public Class AESManagedEncryption
  3.  
  4. #Region " Global Variables "
  5.         Private Shared encoding As New UTF8Encoding
  6.         Private Shared AESAlg As New AesManaged
  7.         Private Shared HashAlg As HashAlgorithm = New SHA256Managed
  8.          Enum AESCryptographicAction
  9.             Encrypt = 0
  10.             Decrypt = 1
  11.         End Enum
  12. #End Region
  13.  
  14. #Region " Encryption/Decryption Events "
  15.         Public Overloads Shared Function EncryptDecrypt(ByVal text As String, ByVal key As String, _
  16.                                                         ByVal action As AESCryptographicAction) As String
  17.             Dim textBytes As Byte() = encoding.GetBytes(text)
  18.             Dim keyBytes As Byte() = CheckKey(key)
  19.  
  20.             Return EncryptDecrypt(textBytes, keyBytes, action)
  21.         End Function
  22.  
  23.         Public Overloads Shared Function EncryptDecrypt(ByVal text As String, ByVal key As Byte(), _
  24.                                                         ByVal action As AESCryptographicAction) As String
  25.             Dim textBytes As Byte() = encoding.GetBytes(text)
  26.             Dim keyBytes As Byte() = CheckKey(key)
  27.  
  28.             Return EncryptDecrypt(textBytes, keyBytes, action)
  29.         End Function
  30.  
  31.         Public Overloads Shared Function EncryptDecrypt(ByVal data As Byte(), ByVal key As String, _
  32.                                                         ByVal action As AESCryptographicAction) As String
  33.             Dim keyBytes As Byte() = CheckKey(key)
  34.  
  35.             Return EncryptDecrypt(data, keyBytes, action)
  36.         End Function
  37.  
  38.         Public Overloads Shared Function EncryptDecrypt(ByVal data As Byte(), ByVal key As Byte(), _
  39.                                                         ByVal action As AESCryptographicAction) As String
  40.             If Not key.Length = 32 Then
  41.                 key = CheckKey(key)
  42.             End If
  43.  
  44.             Dim IV As Byte() = GenerateIV(key)
  45.             Try
  46.                 Select Case action
  47.                     Case CryptographicAction.Encrypt
  48.                         Using memStream As New MemoryStream
  49.                             Using cStream As New CryptoStream(memStream, _
  50.                                                        AESAlg.CreateEncryptor(key, IV), _
  51.                                                        CryptoStreamMode.Write)
  52.                                 cStream.Write(data, 0, data.Length)
  53.                             End Using
  54.                             Return Convert.ToBase64String(memStream.ToArray)
  55.                         End Using
  56.  
  57.                     Case CryptographicAction.Decrypt
  58.                         Dim textBytes As Byte() = Convert.FromBase64String(encoding.GetString(data))
  59.                         Using memStream As New MemoryStream(textBytes)
  60.                             Dim decryptedData(textBytes.Length) As Byte
  61.                             Using cStream As New CryptoStream(memStream, _
  62.                                                        AESAlg.CreateDecryptor(key, IV), _
  63.                                                        CryptoStreamMode.Read)
  64.                                 cStream.Read(decryptedData, 0, decryptedData.Length)
  65.                             End Using
  66.                             Return encoding.GetString(decryptedData)
  67.                         End Using
  68.  
  69.                     Case Else
  70.                         Return Nothing
  71.                 End Select
  72.  
  73.             Catch ex As CryptographicException
  74.                 Return "Error - Invalid Password"
  75.             End Try
  76.         End Function
  77. #End Region
  78.  
  79.         'Generate a byte array containing the generated hash from the given key.
  80. #Region " Key Check "
  81.         Private Overloads Shared Function CheckKey(ByVal key As String) As Byte()
  82.             Dim byteKey As Byte() = encoding.GetBytes(key)
  83.  
  84.             Return CheckKey(byteKey)
  85.         End Function
  86.  
  87.         Private Overloads Shared Function CheckKey(ByVal key As Byte()) As Byte()
  88.             Return HashAlg.ComputeHash(key)
  89.         End Function
  90. #End Region
  91.  
  92.         'Generate a byte array containing the generated IV from the given key.
  93. #Region " Generate IV "
  94.         Private Overloads Shared Function GenerateIV(ByVal key As String) As Byte()
  95.             Dim keyBytes As Byte() = encoding.GetBytes(key)
  96.  
  97.             Return GenerateIV(keyBytes)
  98.         End Function
  99.  
  100.         Private Overloads Shared Function GenerateIV(ByVal key As Byte()) As Byte()
  101.             Dim keyReverse As String = encoding.GetString(key).ToCharArray.Reverse.ToString
  102.             Dim NewKey As Byte() = HashAlg.ComputeHash(encoding.GetBytes(keyReverse))
  103.             Dim FinalKey(15) As Byte
  104.  
  105.             Array.Copy(NewKey, FinalKey, 15)
  106.  
  107.             Return FinalKey
  108.         End Function
  109. #End Region
  110.     End Class
  111. #End Region
  112. End Namespace
  • 上一篇:

  • 下一篇:
  • 【字体: 】【打印此文】【关闭窗口
      相关文章:(只显示最新16条)
    VB.Net获取随机密码的实例
    VB.Net用Salt哈希数据的实例
    用DPAPI加密和解密数据的实例
    储存加密的数据库连接字符串到注册表的实例
    Salt加密数据的.Net实例
    Rijndael加密解密的实例
    Rijndael加密的实例
    SHA256 Hash加密的实例
    VB.Net对XML元素进行加密解密的实例
    VB.Net文件CRC32算法的实例
    VB.Net文件SHA1算法的实例
    Blowfish加密算法的实例
    Rijndael类的实例
    TripleDES加解密的实例
    VB.Net实现des加密算法的实例
    VB.Net实现RSA加密的实例

    | 设为首页 | 加入收藏 | 联系站长 | | 友情链接 | 版权申明 |
    乐博网欢迎各种媒体转载我们的原创作品[转载请注明出处];我们鼓励更多VB.Net开发者一起加入研究与探讨;如发现文章访问错误、内容错误或版权疑问、内容有违相关法律(如涉及政治、色情、反动或散布虚假有害信息)等情况,请及时向我们举报,我们将及时纠正!
    联系邮箱:Shiny#vip.qq.com (#替换为@) QQ交流群: 40797788 [闽ICP备05014267号]