우리의 보안 부서 SSN 등 사용자의 이름을 암호화하는 256 비트 암호화를 사용하기를 원하십니다 다른 컴퓨터에 암호를 해독 할 수없는 암호화 된, 그래서 우리는 아래의 샘플 코드 JASYPT로 가기로 결정 :Jasypt는 문자열
encryptor = new StandardPBEStringEncryptor();
encryptor.setProvider(new BouncyCastleProvider());
encryptor.setAlgorithm("PBEWITHSHA256AND256BITAES-CBC-BC");
encryptor.setPassword(OUR_KEY)
encryptor.encrypt("TEXT TO ECNCRYPT")
우리가 알아 차린 문제는 응용 프로그램이 로컬 컴퓨터에서 암호화 된 레코드를 생성 할 때 app-dev 서버의 응용 프로그램이 키를 해독 할 수없고 그 반대 일지라도 키가 동일하더라도 마찬가지입니다. JASYPT가 소금에 컴퓨터 특정 정보를 추가하는 것처럼 보입니다 (Mac 주소 등).
심지어 FixedStringSaltGenerator
또는 ZeroSaltGenerator
을 사용해도 도움이되지 않습니다. 우리가 프로덕션 서버를 다른 시스템으로 마이그레이션하거나 프로덕션 데이터로 미리 프로덕션 데이터를 새로 고치면 정보를 복구하는 데 2 백만 년이 걸릴 수 있으므로 문제가됩니다.
보안 부서는 우리가 잘 알고있는 라이브러리를 사용하고 사내 솔루션을 양도하지 않기를 원합니다. 다른 사람이 jasypt 256 비트 암호화를 사용하여 다른 컴퓨터에서 해독 할 수있는 암호화 된 문자열을 생성 할 수있는 방법에 대한이 문제에 대한 의견을 던질 수 있습니까? 아니면 우리가 찌르지 않은 데이터로 사전 찌르는 데이터베이스를 새로 고칠 때 어떻게 이름 등을 복구 할 수 있습니까? 다른 서버를 통해 암호화 되었습니까?
유용한 통찰력을 주시면 감사하겠습니다.
컴퓨터의 엔디안이 다른가요? machine1의 암호화 된 바이트 배열이 machine2의 암호화 된 바이트 배열과 같은지 확인하십시오. 일치 시키려면 [ByteBuffer] (http://docs.oracle.com/javase/1.5.0/docs/api/java/nio/ByteBuffer.html)와 같은 것을 사용해야 할 수도 있습니다. –
"* 우리는 정보를 복구하는 데 2 백만 년이 필요할 수도 있습니다."> 고전 ... 나에게서 껄껄 거리는 소리가 들렸습니다. :-) –
감사합니다. O'Pootertoot. 문제의 절반이 해결되었습니다. 우리의 로컬 env는 little endian 인 windows이고, 서버는 big endian 인 solaris입니다. 여러 Windows 머신 또는 Dev 및 테스트 서버에서 데이터를 암호화/해독 할 수 있지만 데이터가 Windows에서 암호화되고 서버에서 해독 될 때는 작동하지 않습니다. Jasypt가이 문제를 해결할 수있는 방법을 제공하는지 궁금합니다. –