6
는 내가 PHP에서 암호화하려면 CFB 모드암호/3DES/CFB/자바와 PHP
와 3DES 데이터의 암호를 해독하는 PHP servor 있습니다
$montant = "500";
$message_crypte = mcrypt_encrypt(MCRYPT_3DES, "N4y1FRDRJ7wn7eJNnWaahCIS", $montant, ,CRYPT_MODE_CFB, "NCNPJDcR");
$montant = base64_encode($message_crypte);
PHP에서이 스크립트는 서로 OK입니다 체계.
그리고 자바 암호화하려면 :
public class CryptData {
private KeySpec keySpec;
private SecretKey key;
private IvParameterSpec iv;
public CryptData(String keyString, String ivString) {
try {
final MessageDigest md = MessageDigest.getInstance("md5");
final byte[] digestOfPassword = md.digest(Base64
.decodeBase64(keyString.getBytes("ISO-8859-1")));
final byte[] keyBytes = Arrays.copyOf(digestOfPassword, 24);
for (int j = 0, k = 16; j < 8;) {
keyBytes[k++] = keyBytes[j++];
}
//keySpec = new DESedeKeySpec(keyBytes);
keySpec = new DESedeKeySpec(keyString.getBytes());
key = SecretKeyFactory.getInstance("DESede")
.generateSecret(keySpec);
iv = new IvParameterSpec(ivString.getBytes());
} catch (Exception e) {
e.printStackTrace();
}
}
public String encrypt(String value) {
try {
Cipher ecipher = Cipher.getInstance("DESede/CFB/NoPadding");
//"SunJCE");
ecipher.init(Cipher.ENCRYPT_MODE, key, iv);
if (value == null)
return null;
// Encode the string into bytes using utf-8
byte[] valeur = value.getBytes("ISO-8859-1");
//byte[] utf8 = value.getBytes();
// Encrypt
byte[] enc = ecipher.doFinal(valeur);
// Encode bytes to base64 to get a string
return new String(Base64.encodeBase64(enc), "ISO-8859-1");
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
내가 JAVA
PHP와하지 같은 결과가어떻게 modifiy JAVA 처리 PHP와 같은 결과를 얻기 위해 ? 암호 ecipher = Cipher.getInstance ("DESede/CFB8/NoPadding");
는
- 여기 샘플에서 생략되거나 패딩이이 수행되고 있지이었다 PHP쪽에? – sarnold
내 PHP 스크립트는 이미 PHP 나 ASP 또는 C#의 다른 사이트와 작업 중이므로 코드는 변경하지 않고 Java는 변경합니다. 아이디어가 있으십니까? NoPadding으로 테스트했지만 어느 쪽도 작동하지 않습니다 ... – user1450740
이것은 나일지도 모르지만 PHP 스크립트에서 base64 인코딩이 아닌 것처럼 보입니다. 그래서 반대쪽에서 디코딩하면 순수한 횡설수설처럼 읽힐까요? –