유니버설 윈도우 응용 프로그램에서 AES128-EBC 암호화 문자열 검색에 도움이 필요합니다.
키로 사용되는 문자열에 암호가 있습니다. 32 비트 길이의 MD5 해시 값으로 AES128-EBC로 텍스트를 암호화하고 싶습니다. 는 지금은 MD5Hash를 만드는이 사용하고 있습니다 :UES의 AES128-ECB
public string GetMD5Hash(String strMsg)
{
string strAlgName = HashAlgorithmNames.Md5;
IBuffer buffUtf8Msg = CryptographicBuffer.ConvertStringToBinary(strMsg, BinaryStringEncoding.Utf8);
HashAlgorithmProvider objAlgProv = HashAlgorithmProvider.OpenAlgorithm
string strAlgNameUsed = objAlgProv.AlgorithmName;
IBuffer buffHash = objAlgProv.HashData(buffUtf8Msg);
if (buffHash.Length != objAlgProv.HashLength)
{
throw new Exception("There was an error creating the hash");
}
string hex = CryptographicBuffer.EncodeToHexString(buffHash);
return hex;
}
그리고이 코드를 암호화 : 저는 출력 문자열이 비어 SymmetricAlgorithmNames.AesEcb
을 사용하고 때
public string Encrypt(string input, string pass)
{
SymmetricKeyAlgorithmProvider provider = SymmetricKeyAlgorithmProvider.OpenAlgorithm(SymmetricAlgorithmNames.AesEcbPkcs7);
CryptographicKey key;
string encrypted = "";
byte[] keyhash = Encoding.ASCII.GetBytes(GetMD5Hash(pass));
key = provider.CreateSymmetricKey(CryptographicBuffer.CreateFromByteArray(keyhash));
IBuffer data = CryptographicBuffer.CreateFromByteArray(Encoding.Unicode.GetBytes(input));
encrypted = CryptographicBuffer.EncodeToBase64String(CryptographicEngine.Encrypt(key, data, null));
return encrypted;
}
내가 SymmetricAlgorithmNames.AesEcbPkcs7
을 사용하고 이유를 원인입니다. 나는 왜 그런지 이해하지 못한다. 제 질문은 : 내 코드가 AES128-ECB 암호화를 생성합니까? 왜냐하면 나는 그것이 정말로 확실하지 않기 때문이다. 암호화 된 데이터를 기다리는 소프트웨어가이를 인식하지 못하기 때문에 해독 할 수 없습니다.
보안이 필요한 경우 : 1. ECB 모드를 사용하지 마십시오. 너무 안전하지 않습니다. [ECB 모드] (https://en.wikipedia.org/wiki/Block_cipher_mode_of_operation#Electronic_Codebook_.28ECB.29)를 참조하십시오. 펭귄에게. 임의의 iv와 함께 CBC 모드를 사용하고 암호화 된 데이터 앞에 추가합니다. 2. MD5를 사용하여 암호화 키를 얻지 마십시오. HMAC를 무작위 소금으로 약 100ms 동안 반복하십시오 (소금은 해시와 함께 저장해야합니다). password_hash, PBKDF2, Bcrypt 및 유사한 기능과 같은 기능을 사용하십시오. 요점은 공격자가 무차별 적으로 암호를 찾는 데 많은 시간을 소비하게하는 것입니다. – zaph
@zaph 유감스럽게도 ECB 또는 다른 UWP 누락 조각에 따라 IETF 표준이 있습니다. 항상 다른 것을 사용할 수는 없습니다. –
@LexLi 개발자가 실행하는 몇 가지 동일한 코드 이외의 다른 이유없이 많은 사용법이 있습니다. IOW, ECB 모드를 사용하는 이유를 이해해야합니다. 여기에 암호 키 유도에 사용되는 MD5 해시도 있습니다. ECB 모드가 좋은 이유나 이해없이 사용된다고 가정하고 있습니다. – zaph