항상 동일한 데이터에 대해 동일한 결과로 데이터를 암호화하는 비대칭 암호화 알고리즘이 필요합니다. 내가 사용할 때 RSACryptoServiceProvider
항상 동일한 입력에 대해 다른 암호화 된 데이터를 제공합니다.
byte[] encrypted1, encrypted2;
using ( var RSA1 = new RSACryptoServiceProvider() )
{
encrypted1 = RSA1.Encrypt(data, false);
encrypted2 = RSA1.Encrypt(data, false);
}
여기 encrypted1
와 encrypted2
다릅니다.
나는 이것이 새로운 RSA 구현의 무작위 패딩 능력 때문이라고 들었습니다. 그러나 패딩을 false로 설정해도 발생합니다. 그래서;
참조하는 부울은 패딩을 켜거나 끄는 것을 의미하지 않습니다. OAEP 패딩 또는 PKCS # 1 v1.5 패딩을 사용합니다 (처음에는 부울이 아니어야하며 열거 형 값이어야 함). 두 패딩 메커니즘 모두 (부분적으로) 무작위 패딩을 배포합니다. 무작위 소스가 실제로 무작위 인 한 출력은 결정적 이지 않습니다 .
물론 BlindedRSAEngine
Bouncy Castle을 사용하여 자신 만의 패딩을 만들 수 있지만, 임의의 패딩을 제거하면 RSA의 보안이 무효화됩니다. 예를 들어 여기에 표시된대로 의미를 완전히 이해 한 경우에만이 작업을 수행 하십시오 .
즉, 거기에 가지 마십시오.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다