문제

나는 암호화 전문가,그러나 내가 알고있는 것처럼,3DES 은 대칭 암호화 알고리즘을 의미하는,그것은 공개 키를 사용합니다.

그럼에도 불구하고,내가가 부여된 데이터를 암호화하는 공개 키를 사용하여,(특히,.CER 파일)입니다.를 무시하면 전체의 대칭/비대칭 thang,나는 할 수 있어야 키를 사용하여 데이터에서 공용 키 TripleDES 키입니다.그러나 나는 어려서 추출한 핵심에서 바이트.CER 파일입니다.이 코드는 그대로..

TripleDESCryptoServiceProvider cryptoProvider = new TripleDESCryptoServiceProvider();
X509Certificate2 cert = new X509Certificate2(@"c:\temp\whatever.cer");
cryptoProvider.Key = cert.PublicKey.Key.

가장 간단한 방법을 찾을 수 있습을 추출하는 원 키 바이트에서 인증서를 ToXmlString(bool),그리고 그 일을 해키 substringing 에 따라 반환되는 문자열입니다.그러나,이것은 그렇게 hackish 나는 느낌이 없어야 더 간단하고 명백한 방법으로 그것을 할 수 있습니다.

내가 누락 간단한 방법으로 사용.cer 파일을 제공하는 핵심 데이터는 C#3DES 암호화 클래스고,또는 해킹이 그것을 밖으로 인증서의 xml 문자열이 정말로 가장 좋은 방법에 대해 이?

도움이 되었습니까?

해결책

cryptoprovider.key = cert.getpublickey ()?

다른 팁

대칭 암호화를 위해 비대칭 암호화를 위해 생성 된 키를 사용하는 것은 좋은 생각이 아닙니다. 공개 키를 3DES의 암호화 키로 사용하는 방법을 제시하지 못하게하는 것은 아무것도 없지만 최종 결과는 공개 키에 액세스 할 수있는 사람이라면 누구나 암호 텍스트를 해독 할 수 있습니다. .

비대칭 암호화로 많은 양의 데이터를 암호화하는 것은 갈 길이 아닙니다. 대신 대칭 알고리즘으로 데이터를 암호화하고 대칭 키 (및 IV)를 공개 키로 암호화하십시오.

이 페이지 MSDN에서 .NET 대칭 암호화를 수행하는 데 실제로 도움이되었습니다.

진짜 문제는 공용 키가,well, 공개.미 자유롭게 사용할 수 있는 의미,그것이 제공하는 제안의 암호화 합니다.

지옥은,사람이 스레드가 필요한 모든 정보를 해독하는 모든 것입니다.그래서 구글의.

시는 격려의 사용자가 사용하지 않는 공공의 핵심 데이터와 같습니다.적어도 그들을 주는 암호 또는 다른 약간 더 안전한 덩어리를 생성하는 데 사용할 수 있는 일관된 키.

그리고 한가지 더 있습니다.인증서 키 크기에 따라 다릅니다.그것은 아마 손잡이를 던지고 있는 여분의 바이트 키,하지만 당신은 아마을 얻을 배열 색인이 범위를 벗어 예외 경우 키 일어나는 것보다 짧은 3DES 키 필요합니다.나는 의심이 일어날 것,3DES 만 56bits 및 인증서 키은 거의 항상 256bits 또는 크다.

당신이 놓친 것은 키 바이트가 포함 된 문자열에서 바이트를 변환하는 것이라고 생각합니다.

방법을 바랍니다 Base64String에서 너를 도울 것이다:

byte[] keyBytes = Convert.FromBase64String(sourceString);
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top