를 만들 수 없습니다 :LockBox3 DecryptStream 일반 스트림
void __fastcall TForm1::EncryptBtnClick(TObject *Sender)
{
char plainchar[16]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F};
char keychar[16]={0xE8,0xE9,0xEA,0xEB,0xED,0xEE,0xEF,0xF0,0xF2,0xF3,0xF4,0xF5,0xF7,0xF8,0xF9,0xFA};
char chiperchar[16];
TMemoryStream *plainStream;
TMemoryStream *chiperStream;
TMemoryStream *keyStream;
plainStream = new TMemoryStream();
chiperStream = new TMemoryStream();
keyStream = new TMemoryStream();
plainStream->Clear();
plainStream->Position=0;
plainStream->WriteBuffer(plainchar,16);
plainStream->Position=0;
keyStream->Clear();
keyStream->Position=0;
keyStream->WriteBuffer(keychar,16);
keyStream->Position=0;
Codec1->Reset();
Codec1->InitFromStream(keyStream);
Codec1->EncryptStream(plainStream,chiperStream);
chiperStream->Position=0;
chiperStream->ReadBuffer(chiperchar,16);
plainStream->Free();
chiperStream->Free();
keyStream->Free();
}
그리고 chiperchar 버퍼에
0x3E,0x45,0xC2,0x15,0xBA,0x45,0x0E,0xA6,0xEF,0x94,0xA3,0x08,0x82,0xB8,0x1B,0xD4
을 기대하세요. 내가 위에서 chiper 버퍼에 DecryptStream 기능을 사용하려고하면
불행하게도, 그것은 일반 데이터 스트림을 생성하지 않는 내가 잘못 dooing있어 무엇
void __fastcall TForm1::DecryptBtnClick(TObject *Sender)
{
char chiperchar[16]={0x3E,0x45,0xC2,0x15,0xBA,0x45,0x0E,0xA6,0xEF,0x94,0xA3,0x08,0x82,0xB8,0x1B,0xD4};
char keychar[16]={0xE8,0xE9,0xEA,0xEB,0xED,0xEE,0xEF,0xF0,0xF2,0xF3,0xF4,0xF5,0xF7,0xF8,0xF9,0xFA};
char plainchar[16];
TMemoryStream *plainStream;
TMemoryStream *chiperStream;
TMemoryStream *keyStream;
plainStream = new TMemoryStream();
chiperStream = new TMemoryStream();
keyStream = new TMemoryStream();
chiperStream->Clear();
chiperStream->Position=0;
chiperStream->WriteBuffer(chiperchar,16);
chiperStream->Position=0;
keyStream->Clear();
keyStream->Position=0;
keyStream->WriteBuffer(keychar,16);
keyStream->Position=0;
Codec1->Reset();
Codec1->InitFromStream(keyStream);
plainStream->Clear();
plainStream->Position=0;
Codec1->DecryptStream(plainStream,chiperStream);
plainStream->Position=0;
chiperStream->Position=0;
plainStream->Position=0;
plainStream->ReadBuffer(plainchar,16);
plainStream->Free();
chiperStream->Free();
keyStream->Free();
}
(스트림은 0 바이트 아이폰에이다)? DecrpytStream이 적절한 스트림을 만들 수없는 이유는 무엇입니까?
EncryptString 및 DecryptString 함수를 사용할 때 모든 것이 올바르게 작동하고 암호화 및 암호 해독 후 동일한 문자열을 얻습니다.
Codec1의 속성은 다음과 같습니다, 나는 C++를 모르는
AsymetricKeySizeInBits = 128
AdvancedOptions2 = []
CryptoLibrary = CryptographicLibrary1
StreamCipherId = 'native.StreamToBlock'
BlockCipherId = 'native.AES-128'
ChainId = 'native.ECB'
얽힌를 버전 3.6.3을하지 사용은 델파이 암호화 라이브러리입니다. 이것이 무슨 언어 지? 자바? C++? 어떤 버전의 Lockbox를 사용하고 있으며 어디에서 가져 왔습니까? –
이것은 C++ Builder 10입니다. Embarcadero의 Seattle, LockBox 버전 3.5.0은 IDE의 GetIt Package Manager 빌드에서 제공했습니다. DecryptStream 및 DecryptMemory 함수를 사용해 보았습니다. 두 경우 모두 function이 plainStream을 채우지 않습니다 (plainStream-> Lenght는 여전히 0 임). EncryptStream 함수는 EncryptString 및 DecryptString뿐만 아니라 잘 작동합니다. C++이나 Delphi에서 작동하는 데모 코드를 제공해 주시겠습니까? – Sebastor
설치 후이 줄을 주석 처리해야했습니다. "__property TOnGenerateKeyFunc OnCustomCipherGenerateKey = {read = FOnGenerateKeyFunc, write = FOnGenerateKeyFunc};" Utplb_cryptographiclibrary.hpp 파일에 있습니다. 이것이이 문제의 근원 일 수 있습니까? – Sebastor