VB 字符串加密解密[高分]

VB 字符串加密解密[高分],第1张

就这样了,大概还行

Private Function Encrypt(ByVal StrSource As String) As String'加密

Dim BLowData As Byte

Dim BHigData As Byte

Dim i As Long

Dim k As Integer

Dim StrEncrypt As String

Dim StrChar As String

Dim KeyTemp As String

Dim Key1 As Byte

For k = 1 To 30

KeyTemp = KeyTemp &CStr(Int(Rnd * (9) + 1))

Next

Key1 = CByte(Mid(KeyTemp, 11, 1) &Mid(KeyTemp, 27, 1))

For i = 1 To Len(StrSource)

StrChar = Mid(StrSource, i, 1) '从待加密字符串中取出一个字符

BLowData = AscB(MidB(StrChar, 1, 1)) Xor Key1'取字符的低字节和Key1进行异或运算

SHigData = AscB(MidB(StrChar, 2, 1)) '取字符的高字节

StrEncrypt = StrEncrypt &ChrB(BLowData) &ChrB(BHigData)'将运算后的数据合成新的字符

Next i

Encrypt = KeyTemp &StrEncrypt

End FunctionPrivate Function Decrypt(ByVal StrSource As String) As String '解密

Dim BLowData As Byte

Dim BHigData As Byte

Dim i As Long

Dim k As Integer

Dim StrDecrypt As String

Dim StrChar As String

Dim KeyTemp As String

Dim Key1 As Byte

KeyTemp = Mid(StrSource, 1, 30)

Key1 = CByte(Mid(KeyTemp, 11, 1) &Mid(KeyTemp, 27, 1))

For i = 31 To Len(StrSource)

StrChar = Mid(StrSource, i, 1)'从待解密字符串中取出一个字符

BLowData = AscB(MidB(StrChar, 1, 1)) Xor Key1 '取字符的低字节和Key1进行异或运算

BHigData = AscB(MidB(StrChar, 2, 1)) '取字符的高字节

StrDecrypt = StrDecrypt &ChrB(BLowData) &ChrB(BHigData) '将运算后的数据合成新的字符

Next i

Decrypt = StrDecryptEnd Function

Private Sub Command2_Click()

MsgBox Decrypt(InputBox(""))

End SubPrivate Sub Command1_Click()

Text1.Text = Encrypt(InputBox(""))

End Sub

1.程序加密可结合AES算法,在程序运行中,通过外部芯片中的AES密钥,加密数据来验证双方的正确性,称之为对比认证。

2.加密数据传输过程中,可通过AES加密后形成密文传输,到达安全端后再进行解密,实现数据传输安全控制。

3.综合1和2,当前高大上的方式是程序加密可进行移植到加密芯片,存储在加密芯片中,运行也在加密芯片内部运行,输入数据参数,返回执行结果,同时辅助以AES加密和认证,实现数据程序的全方位防护

AesCryptoServiceProvider 类

.NET Framework 4.5 其他版本

使用高级加密标准 (AES) 算法的加密应用程序编程接口 (CAPI) 实现来执行对称加密和解密。

继承层次结构

System.Object

System.Security.Cryptography.SymmetricAlgorithm

System.Security.Cryptography.Aes

System.Security.Cryptography.AesCryptoServiceProvider

命名空间: System.Security.Cryptography

程序集: System.Core(在 System.Core.dll 中)

语法

C#C++F#VB

[HostProtectionAttribute(SecurityAction.LinkDemand, MayLeakOnAbort = true)]

public sealed class AesCryptoServiceProvider : Aes

AesCryptoServiceProvider 类型公开以下成员。

构造函数

显示: 继承 保护

名称 说明

公共方法 AesCryptoServiceProvider 初始化 AesCryptoServiceProvider 类的新实例。

页首

属性

显示: 继承 保护

名称 说明

公共属性 BlockSize 获取或设置加密 *** 作的块大小(以位为单位)。 (继承自 SymmetricAlgorithm。)

公共属性 FeedbackSize 获取或设置加密 *** 作的反馈大小(以位为单位)。 (继承自 SymmetricAlgorithm。)

公共属性 IV 获取或设置对称算法的初始化向量 (IV)。 (继承自 SymmetricAlgorithm。)

公共属性 Key 获取或设置用于加密和解密的对称密钥。 (重写 SymmetricAlgorithm.Key。)

公共属性 KeySize 获取或设置密钥的大小(以位为单位)。 (重写 SymmetricAlgorithm.KeySize。)

公共属性 LegalBlockSizes 获取对称算法支持的块大小(以位为单位)。 (继承自 SymmetricAlgorithm。)

公共属性 LegalKeySizes 获取对称算法支持的密钥大小(以位为单位)。 (继承自 SymmetricAlgorithm。)

公共属性 Mode 获取或设置对称算法的运算模式。 (继承自 SymmetricAlgorithm。)

公共属性 Padding 获取或设置对称算法中使用的填充模式。 (继承自 SymmetricAlgorithm。)

页首

方法

显示: 继承 保护

名称 说明

公共方法 Clear 释放 SymmetricAlgorithm 类使用的所有资源。 (继承自 SymmetricAlgorithm。)

公共方法 CreateDecryptor() 使用当前的密钥和初始化向量 (IV) 创建对称 AES 解密器对象。 (重写 SymmetricAlgorithm.CreateDecryptor()。)

公共方法 CreateDecryptor(Byte[], Byte[]) 使用指定的密钥和初始化向量 (IV) 创建对称 AES 解密器对象。 (重写 SymmetricAlgorithm.CreateDecryptor(Byte[], Byte[])。)

公共方法 CreateEncryptor() 使用当前的密钥和初始化向量 (IV) 创建对称 AES 加密器对象。 (重写 SymmetricAlgorithm.CreateEncryptor()。)

公共方法 CreateEncryptor(Byte[], Byte[]) 使用指定的密钥和初始化向量 (IV) 创建对称加密器对象。 (重写 SymmetricAlgorithm.CreateEncryptor(Byte[], Byte[])。)

公共方法 Dispose() 释放由 SymmetricAlgorithm 类的当前实例占用的所有资源。 (继承自 SymmetricAlgorithm。)

公共方法 Equals(Object) 确定指定的对象是否等于当前对象。 (继承自 Object。)

公共方法 GenerateIV 生成用于该算法的随机初始化向量 (IV)。 (重写 SymmetricAlgorithm.GenerateIV()。)

公共方法 GenerateKey 生成用于该算法的随机密钥。 (重写 SymmetricAlgorithm.GenerateKey()。)

公共方法 GetHashCode 作为默认哈希函数。 (继承自 Object。)

公共方法 GetType 获取当前实例的 Type。 (继承自 Object。)

公共方法 ToString 返回表示当前对象的字符串。 (继承自 Object。)

公共方法 ValidKeySize 确定指定的密钥大小对当前算法是否有效。 (继承自 SymmetricAlgorithm。)

页首

备注

说明说明

应用到HostProtectionAttribute 此类型或成员的特性具有以下Resources 属性值:MayLeakOnAbort。这HostProtectionAttribute 不影响桌面应用程序(通常通过双击图标、键入命令或在浏览器中输入 URL 来启动这些应用程序)。有关更多信息,请参见HostProtectionAttribute 类或SQL Server 编程和宿主保护特性.

示例

下面的示例演示如何使用 AesCryptoServiceProvider 类加密和解密示例数据。

C#VB

using System

using System.IO

using System.Security.Cryptography

namespace Aes_Example

{

class AesExample

{

public static void Main()

{

try

{

string original = "Here is some data to encrypt!"

// Create a new instance of the AesCryptoServiceProvider

// class. This generates a new key and initialization

// vector (IV).

using (AesCryptoServiceProvider myAes = new AesCryptoServiceProvider())

{

// Encrypt the string to an array of bytes.

byte[] encrypted = EncryptStringToBytes_Aes(original, myAes.Key, myAes.IV)

// Decrypt the bytes to a string.

string roundtrip = DecryptStringFromBytes_Aes(encrypted, myAes.Key, myAes.IV)

//Display the original data and the decrypted data.

Console.WriteLine("Original: {0}", original)

Console.WriteLine("Round Trip: {0}", roundtrip)

}

}

catch (Exception e)

{

Console.WriteLine("Error: {0}", e.Message)

}

}

static byte[] EncryptStringToBytes_Aes(string plainText, byte[] Key, byte[] IV)

{

// Check arguments.

if (plainText == null || plainText.Length <= 0)

throw new ArgumentNullException("plainText")

if (Key == null || Key.Length <= 0)

throw new ArgumentNullException("Key")

if (IV == null || IV.Length <= 0)

throw new ArgumentNullException("Key")

byte[] encrypted

// Create an AesCryptoServiceProvider object

// with the specified key and IV.

using (AesCryptoServiceProvider aesAlg = new AesCryptoServiceProvider())

{

aesAlg.Key = Key

aesAlg.IV = IV

// Create a decrytor to perform the stream transform.

ICryptoTransform encryptor = aesAlg.CreateEncryptor(aesAlg.Key, aesAlg.IV)

// Create the streams used for encryption.

using (MemoryStream msEncrypt = new MemoryStream())

{

using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write))

{

using (StreamWriter swEncrypt = new StreamWriter(csEncrypt))

{

//Write all data to the stream.

swEncrypt.Write(plainText)

}

encrypted = msEncrypt.ToArray()

}

}

}

// Return the encrypted bytes from the memory stream.

return encrypted

}

static string DecryptStringFromBytes_Aes(byte[] cipherText, byte[] Key, byte[] IV)

{

// Check arguments.

if (cipherText == null || cipherText.Length <= 0)

throw new ArgumentNullException("cipherText")

if (Key == null || Key.Length <= 0)

throw new ArgumentNullException("Key")

if (IV == null || IV.Length <= 0)

throw new ArgumentNullException("IV")

// Declare the string used to hold

// the decrypted text.

string plaintext = null

// Create an AesCryptoServiceProvider object

// with the specified key and IV.

using (AesCryptoServiceProvider aesAlg = new AesCryptoServiceProvider())

{

aesAlg.Key = Key

aesAlg.IV = IV

// Create a decrytor to perform the stream transform.

ICryptoTransform decryptor = aesAlg.CreateDecryptor(aesAlg.Key, aesAlg.IV)

// Create the streams used for decryption.

using (MemoryStream msDecrypt = new MemoryStream(cipherText))

{

using (CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read))

{

using (StreamReader srDecrypt = new StreamReader(csDecrypt))

{

// Read the decrypted bytes from the decrypting stream

// and place them in a string.

plaintext = srDecrypt.ReadToEnd()

}

}

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12173317.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存