如何使用AES 128加密和解密? [英] How can I encrypt and decrypt using AES 128 without an IV?
本文介绍了如何使用AES 128加密和解密?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
解决方案
导入命名空间
using System;
使用System.IO;
使用System.Text;
使用System.Security.Cryptography;
static void Main(string [] args)
{
string value =@ arifansari300< 3>;
string encryptedValue = EncryptDecrypt.Encrypt(value);
string decryptptedValue = EncryptDecrypt.Decrypt(encryptedValue);
}
public static string Encrypt(string clearText)
{
string EncryptionKey =MAKV2SPBNI99212;
byte [] clearBytes = Encoding.Unicode.GetBytes(clearText);
使用(Aes encryptor = Aes.Create())
{
Rfc2898DeriveBytes pdb = new
Rfc2898DeriveBytes(EncryptionKey,new byte []
{0x49,0x76,0x61 ,0x6e,0x20,0x4d,0x65,0x64,0x76,0x65,0x64,0x65,0x76});
encryptor.Key = pdb.GetBytes(32);
encryptor.IV = pdb.GetBytes(16);
使用(MemoryStream ms = new MemoryStream())
{
using(CryptoStream cs = new CryptoStream(ms,encryptor.CreateEncryptor(),CryptoStreamMode.Write))
{
cs.Write(clearBytes,0,clearBytes.Length);
cs.Close();
}
clearText = Convert.ToBase64String(ms.ToArray());
}
}
return clearText;
}
public static string Decrypt(string cipherText)
{
string EncryptionKey =MAKV2SPBNI99212;
byte [] cipherBytes = Convert.FromBase64String(cipherText);
使用(Aes encryptor = Aes.Create())
{
Rfc2898DeriveBytes pdb = new
Rfc2898DeriveBytes(EncryptionKey,new byte []
{0x49,0x76,0x61 ,0x6e,0x20,0x4d,0x65,0x64,0x76,0x65,0x64,0x65,0x76});
encryptor.Key = pdb.GetBytes(32);
encryptor.IV = pdb.GetBytes(16);
using(MemoryStream ms = new MemoryStream())
{
using(CryptoStream cs = new CryptoStream(ms,encryptor.CreateDecryptor(),CryptoStreamMode.Write))
{
cs.Write(cipherBytes,0,cipherBytes.Length);
cs.Close();
}
cipherText = Encoding.Unicode.GetString(ms.ToArray());
}
}
return cipherText;
}
I'm currently needing a way to encrypt a string and decrypt a byte array using AES-128 symmetrical encryption, in C#. I can't find a way how to do this, but maybe I've missed something.
解决方案
Import namespaces
using System;
using System.IO;
using System.Text;
using System.Security.Cryptography;
static void Main(string[] args)
{
string value = "@arifansari300<3>";
string encryptedValue= EncryptDecrypt.Encrypt(value);
string decryptedValue = EncryptDecrypt.Decrypt(encryptedValue);
}
public static string Encrypt(string clearText)
{
string EncryptionKey = "MAKV2SPBNI99212";
byte[] clearBytes = Encoding.Unicode.GetBytes(clearText);
using (Aes encryptor = Aes.Create())
{
Rfc2898DeriveBytes pdb = new
Rfc2898DeriveBytes(EncryptionKey, new byte[]
{ 0x49, 0x76, 0x61, 0x6e, 0x20, 0x4d, 0x65, 0x64, 0x76, 0x65, 0x64, 0x65, 0x76 });
encryptor.Key = pdb.GetBytes(32);
encryptor.IV = pdb.GetBytes(16);
using (MemoryStream ms = new MemoryStream())
{
using (CryptoStream cs = new CryptoStream(ms, encryptor.CreateEncryptor(), CryptoStreamMode.Write))
{
cs.Write(clearBytes, 0, clearBytes.Length);
cs.Close();
}
clearText = Convert.ToBase64String(ms.ToArray());
}
}
return clearText;
}
public static string Decrypt(string cipherText)
{
string EncryptionKey = "MAKV2SPBNI99212";
byte[] cipherBytes = Convert.FromBase64String(cipherText);
using (Aes encryptor = Aes.Create())
{
Rfc2898DeriveBytes pdb = new
Rfc2898DeriveBytes(EncryptionKey, new byte[]
{ 0x49, 0x76, 0x61, 0x6e, 0x20, 0x4d, 0x65, 0x64, 0x76, 0x65, 0x64, 0x65, 0x76 });
encryptor.Key = pdb.GetBytes(32);
encryptor.IV = pdb.GetBytes(16);
using (MemoryStream ms = new MemoryStream())
{
using (CryptoStream cs = new CryptoStream(ms, encryptor.CreateDecryptor(), CryptoStreamMode.Write))
{
cs.Write(cipherBytes, 0, cipherBytes.Length);
cs.Close();
}
cipherText = Encoding.Unicode.GetString(ms.ToArray());
}
}
return cipherText;
}
这篇关于如何使用AES 128加密和解密?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文