首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何加密Blowfish/CBC/PKCS5Padd,比较PHP和Java的加密

如何加密Blowfish/CBC/PKCS5Padd,比较PHP和Java的加密
EN

Stack Overflow用户
提问于 2022-11-09 05:07:39
回答 1查看 41关注 0票数 0

我试图加密文本,问题是我在PHP和Java中有两个不同的加密值。

PHP和Java中的预期输出应该是相同的。

如果有任何问题的话,是否有一种方法来实现这一目标并处理这段代码?

以下是加密的结果:

PHP代码:

代码语言:javascript
复制
<?php
$cipher = 'BF-CBC';

$key = 'SECRETKEY';

$iv = "abcdefgh";

$opts = OPENSSL_ZERO_PADDING;

$plaintext = "Text";

if (strlen($plaintext) % 8) {
    $plaintext = str_pad($plaintext, strlen($plaintext) + 8 - strlen($plaintext) % 8, "\0");
}

$chiperRaw = openssl_encrypt($plaintext, $cipher, $key, $opts, $iv);

$ciphertext = trim(base64_encode($chiperRaw));

echo($ciphertext);

?>

Java代码:

代码语言:javascript
复制
private static final String ALGORITHM = "Blowfish";
private static final String MODE = "Blowfish/CBC/PKCS5Padding";
private static final String IV = "abcdefgh";
private static final String Key = "SECRETKEY";

public static String encrypt(String value) throws NoSuchPaddingException, NoSuchAlgorithmException, InvalidAlgorithmParameterException, InvalidKeyException, IllegalBlockSizeException, BadPaddingException {
    SecretKeySpec secretKeySpec = new SecretKeySpec(Key.getBytes(), ALGORITHM);
    Cipher cipher = Cipher.getInstance(MODE);
    cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec, new IvParameterSpec(IV.getBytes()));
    byte[] values = cipher.doFinal(value.getBytes());
    return Base64.encodeToString(values, Base64.DEFAULT);
}

结果

代码语言:javascript
复制
PHP: 83kZpBbrQT4= 

Java: YBSmeMNPSjw=

产出应是:

代码语言:javascript
复制
PHP: YBSmeMNPSjw= 
Java: YBSmeMNPSjw=
EN

回答 1

Stack Overflow用户

发布于 2022-11-09 06:46:51

参考这个bug:https://bugs.php.net/bug.php?id=72362,您可以使用一个无文档的选项https://bugs.php.net/bug.php?id=72362来解决这个问题。

代码语言:javascript
复制
openssl_encrypt("Text","BF-CBC","SECRETKEY",OPENSSL_DONT_ZERO_PAD_KEY,"abcdefgh");

否则,您需要手动按住键,使其达到合理的大小。

代码语言:javascript
复制
openssl_encrypt("Text","BF-CBC","SECRETKEYSECRETKEY",0,"abcdefgh");
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74370149

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档