2011-12-29 4 views
1

CAPICOM을 통해 데이터를 암호화하고 데이터베이스에 저장하는 Classic ASP로 작성된 응용 프로그램이 있습니다. 암호화 코드는 다음과 같이 보인다 (클래식 ASP, VB를 간결 조금 단순화.) :초기화 벡터 CAPICOM을 사용하여 데이터를 AES- 암호화하는 데 어떻게 찾을 수 있습니까?

set encryptObject = Server.CreateObject("CAPICOM.EncryptedData") 

encryptObject.Algorithm.Name = 4 ' 4 is AES 
encryptObject.Algorithm.KeyLength = ' 0 is MAX 
encryptObject.SetSecret(sharedSecret) ' sharedSecret was set earlier 
encryptObject.Content = stringToEncrypt 

encryptedString = encryptObject.Encrypt() 

을 지금, 나는이 데이터를 읽고 해독 할 필요가있는 .NET 응용 프로그램이 있습니다. RijndaelManaged 클래스를 사용하기 전에 .NET에서 AES 호환 암호화/암호 해독을 수행했으며이 데이터를 해독하기 위해 동일한 방법을 사용할 수 있기를 희망합니다. 그러나 RijndaelManagedRijndaelManaged.CreateEncryptor을 호출 할 때 키와 초기화 벡터를 전달해야하며 CAPICOM은 초기화 벡터를 사용하지 않으므로 CAPICOM의 암호화 된 데이터로이 코드를 작동시키는 방법을 알아낼 수 없습니다. 나는 CAPICOM이 초기화 벡터를 사용하고 있어야하지만 노출시키지 않아야한다고 가정합니다. 벡터를 어떻게 찾을 수 있습니까?

+0

이 문제에 대한 해결책을 찾으면 궁금합니다. 나는 같은 상황에 처해 있으며 암호 해독 기능을 사용하기 위해 비틀 거리고있다! – Dave

+0

@Dave - 나는이 작업을 한 번도 얻지 못했고 결국 다른 접근 방식을 취했습니다. 그러나 클래식 ASP의 CAPICOM이 뱉어내는 가치에는 암호화 된 값 이상이 포함되어 있다는 것을 알았습니다. 추가 속성으로 전체 복잡한 객체를 암호화합니다. 모든 해독 루틴은 제대로 작동하려면 전체 개체를 구문 분석해야합니다. –

답변

1

모든 0을 .NET 암호 해독 루틴에 전달하는 것으로 시작하십시오.

전체 메시지가 잘 해독되면 원본 암호화도 null IV를 사용합니다.

맹 글링 된 첫 번째 블록 (16 바이트)과 읽을 수있는 두 번째 및 후속 블록을 얻을 가능성이 큽니다.

두 번째 블록이 메시지의 실제 시작 인 것처럼 보이면 원본 IV가 암호화 된 메시지의 첫 번째 블록으로 전달됩니다. 그것은 꽤 일반적인 기술입니다.

그렇다면 메시지를 암호화 한 사람에게 물어보아야 할 것입니다. 그렇지 않으면 메시지의 처음 16 바이트없이 살 수 있습니다.

+0

작은 설명으로 정확하게 블록 크기 바이트의 null-IV를 만들어야합니다.이 바이트는 AES의 경우 16 바이트입니다. –