안녕하세요, 그래서 저장 및 저장 프로 시저를 사용하여 저장 해요 msql 데이터베이스에서. 내가 배치되기 전에 C#을 Windows에서 양식의 일부 데이터를 암호화하려고 노력하고있어 그리고 물론 내가 다시 당길 때 해독. 모든 암호화가 C# 측에서 처리됩니다. 난 microsoft's tripleDESCryptoService Class (메모리 버전, 두 번째 예제)에서 암호화 및 복호화에 대한 샘플 코드를 사용하고 있습니다. 값은 암호화되어 데이터베이스로 보내지지만 검색 할 때 "잘못된 데이터"오류가 발생합니다. 암호화 호출의 샘플 C# tripleDESCrypto 저장 및 SQL에서 검색된
TripleDESCryptoServiceProvider tDESalg = new TripleDESCryptoServiceProvider();
byte[] tempByte = new byte[100];
tempByte = encrypt(txt_Last_Name.Text, tDESalg.Key, tDESalg.IV);
txt_Last_Name.Text = System.Text.ASCIIEncoding.ASCII.GetString(tempByte);
txt_Last_Name
다음 데이터베이스로 전송되고, 나는 데이터베이스에 뭔가가 있다는 것을 볼 수있다 ...입니다. "csDecrypt.Read (fromEncrypt, 0 : 데이터베이스에, 마지막 이름에 ... varchar 형 (20) 복호화 호출샘플이의 해독 기능에
TripleDESCryptoServiceProvider tDESalg = new TripleDESCryptoServiceProvider();
string lastName = dr.GetString(dr.GetOrdinal("Last Name"));
if (isEncrypted)
{
byte[] toDecrypt = new ASCIIEncoding().GetBytes(lastName);
lastName = decrypt(toDecrypt, tDESalg.Key, tDESalg.IV);
}
txt_Last_Name.Text = lastName;
그 폭탄입니다 fromEncrypt.Length); " 나는 왜 그런지 이해하지 못한다. 데이터베이스에 올바르게 저장되지 않거나 내 전환이 올바르지 않은지 확실하지 않습니다.
복호화 기능으로 들어가는 "데이터"는 크기가 16이고 0이 아닌 값을 포함하지만 "byte [] fromEncrypt"는 모두 0을 포함하는 크기 16의 배열입니다.
도움을 주셔서 감사합니다!
tempByte는 유니 코드 문자열로 처리해야합니다. 문자열이 아니어도 마찬가지입니다. – pascal
TripleDES는 약한 것으로 간주됩니다. 대신 AES 사용을 고려해야합니다. :) – ykatchou