암호화 된 문자열을 SQL 데이터베이스에 바이트 배열로 저장하고 싶습니다. 잘못된 작업을 파악할 수 없습니다. 코드는 다음과 같습니다AES 암호화를 사용하여 문자열 암호화 및 암호 해독 - C#
private void loginBtn_Click(object sender, EventArgs e)
{
try
{
string password = passwordBox.Text.ToString();
using (Aes algorithm = Aes.Create())
{
byte[] encryptedPassword = EncryptString(password, algorithm.Key, algorithm.IV);
string roundTrip = DecryptString(encryptedPassword, algorithm.Key, algorithm.IV);
MessageBox.Show("Encrypted Password: " + encryptedPassword.ToString() + '\n' + "Round Trip: " + roundTrip.ToString());
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
그리고 'EncryptString'와 'DecryptString'에 사용되는 코드가 Microsoft's Aes Class Reference (페이지의 끝 부분에 위치한 예)의 하나입니다.
나는 내 코드를 실행하고 모든 이것이있는 메시지 상자에서 저를 제공합니다, 이Encrypted Password: System.Byte[]
Round Trip: (empty space)
static byte[] EncryptString(string str, byte[] key, byte[] IV)
{
if (str == null || str.Length <= 0)
throw new ArgumentNullException("string");
if (key == null || key.Length <= 0)
throw new ArgumentNullException("key");
if (IV == null || IV.Length <= 0)
throw new ArgumentNullException("IV");
byte[] encrypted;
using (Aes algorithm = Aes.Create())
{
algorithm.Key = key;
algorithm.IV = IV;
ICryptoTransform encryptor = algorithm.CreateEncryptor(algorithm.Key, algorithm.IV);
using (MemoryStream msEncrypt = new MemoryStream())
{
using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write))
{
using (StreamWriter swEncrypt = new StreamWriter(csEncrypt))
{
swEncrypt.Write(str);
}
encrypted = msEncrypt.ToArray();
}
}
}
return encrypted;
}
static string DecryptString(byte[] cipher, byte[] key, byte[] IV)
{
if (cipher == null || cipher.Length <= 0)
throw new ArgumentNullException("cipher");
if (key == null || key.Length <= 0)
throw new ArgumentNullException("key");
if (IV == null || IV.Length <= 0)
throw new ArgumentNullException("IV");
string decrypted;
using (Aes algorithm = Aes.Create())
{
algorithm.Key = key;
algorithm.IV = IV;
ICryptoTransform decryptor = algorithm.CreateDecryptor(algorithm.Key, algorithm.IV);
using (MemoryStream msDecrypt = new MemoryStream())
{
using (CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read))
{
using (StreamReader srDecrypt = new StreamReader(csDecrypt))
{
decrypted = srDecrypt.ReadToEnd();
}
}
}
}
return decrypted;
}
누군가가 내가 그것을 해결하는 데 도움이 수 주 시겠어요?
P. 텍스트 상자는 샤아가
저에게 잘 작동합니다. 귀하의 실제 암호화/암호 해독 코드를 게시하십시오. –
이 프로그램은 나를 위해 올바르게 작동합니다 -'string password = "ABCD"', roundTrip alco는 "ABCD"를 포함합니다. 비밀번호로 무엇을 시도 했습니까? Microsoft의 예제에서'EncryptString'과'DecryptString' 메소드를 수정 했습니까? –
메시지 줄을 MessageBox.Show ("Encrypted Password :"+ Encoding.ASCII.GetString (encryptedPassword) + '\ n'+ "Round Trip :"+ roundTrip)로 변경하면 더 잘 볼 수 있습니다. 또는 뭔가 (아마도 ACII 대신 UTF, 문자 집합에 따라 다릅니다). –