我正在尝试使用“aes/cfb1/pkcs5padding”(BouncyCastle提供程序)创建一个密码算法,但出现了一个AlithmeticException:
java.lang.ArithmeticException:/by zero位于org.bouncycastle.crypto.paddings.paddedBufferedBlockCipher.getOutputSize(未知源)位于org.bouncycastle.jce.provider.jceBlockCipher$BufferedGenericBlockCipher.getOutputSize(未知源)位于org.bouncycastle.jce.provider.jceBlockCipher.EngineGetOutputSize(未知源)位于
我只是尝试使用默认的Java加密扩展(JCE),但它不能与带有1位的CFB密码模式一起工作。我需要使用密码模式为“CFB 1位”的“AES”算法。它与密码模式“CFB 8位”和“CFB 128位”很好地工作。
private static String buildCipherEncryptCheck(String data){
byte[] dataBytes = data.getBytes();
String encryptedData = null;
try {
// Generate valid key
KeyGenerator keygenerator = KeyGenerator.getInstance("AES");
keygenerator.init(128);
SecretKey myKey = keygenerator.generateKey();
// Generate cipher encrypt
Cipher cipher = Cipher.getInstance("AES/CFB1/PKCS5Padding", new BouncyCastleProvider());
// Initialize the cipher for encryption
cipher.init(Cipher.ENCRYPT_MODE, myKey);
// Encrypt the text
byte[] textEncrypted = cipher.doFinal(dataBytes);
encryptedData = new String(Base64.encode(textEncrypted));
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (InvalidKeyException e) {
e.printStackTrace();
} catch (NoSuchPaddingException e) {
e.printStackTrace();
} catch (IllegalBlockSizeException e) {
e.printStackTrace();
} catch (BadPaddingException e) {
e.printStackTrace();
}
return encryptedData;
}
我不清楚如何将PKCS#5填充应用于流密码。为1位CFB设计一个面向位的填充来填充最后一个字节可能是有意义的,但是PKCS5Padding(实际上是PKCS#7)用字节填充最后一个块。但流密码没有块大小。您不想改用nopadding
吗?
我怀疑CFB模式引擎返回0作为块大小,因为它是未定义的。当填充引擎试图在其计算中使用此块大小时,将抛出算术错误。(如果发生了这种情况,那么BouncyCastle最好验证块大小,并在这里抛出一个更具体的错误。)
我正在为我的应用程序制作加密/解密模块。我按照这个教程 它没有给出任何错误,也没有显示输出。 日志文件 MainActivity.Java AESHelper.Java } AESHelper.java:52 还有AESHelper.java:25
问题内容: 我目前正在使用Java创建应用程序,我用Java搜索了密码加密,但是结果是如此巨大,以至于我感到不知所措。如何使用Java加密和解密密码?加密和解密密码的最佳实践是什么?我猜MD5不是一种方法,因为它是一种单向哈希。我使用struts2作为框架,想知道它们是否提供密码加密 问题答案: 更新时间 : 试试JBCrypt: 从此处下载jBCrypt-0.3,有关更多详细信息,请查看READ
我正在尝试实现AES自定义密码加密,并希望了解下面的代码。 我不太理解为什么需要指定密钥大小256“pbekeyspec(password,salt,65536,256)”,而我已经使用了“pbkdf2withHMACSHA256”,它应该生成256位的SecretKey。 并且在使用我的密码+salt生成密钥之后,为什么我需要将它与SecretKeySpec作为AES算法关联起来。
我得到了一个错误: 不支持的密码算法(AES-256-GCM)(运行时错误) 但我似乎有所有的要求: $openssl enc-help 2>&1 grep gcm -AES-128-ECB-AES-128-GCM-AES-128-OFB -AES-192-ECB-AES-192-GCM-AES-192-OFB -AES-256-ECB-AES-256-GCM-AES-256-OFB Ruby解释
问题内容: 这是我在Node.js中拥有的: 返回: 这就是我在Go中所拥有的: 最终返回 许多Go代码都来自https://gist.github.com/manishtpatel/8222606 我也尝试过此方法:如何在golang中解密在nodejs中加密的AES256位密码?(在这种情况下,无需进行一些修改),但会抛出错误 这是我尝试的代码: 我搜索了很多东西,但似乎无法弄清楚。 我究竟做
问题内容: 如何使用Java充气城堡库实现AES加密?示例代码或示例代码的链接会很不错:) 问题答案: 如果下载bcprov源,您将看到该类。它显示了如何设置bouncyCastle提供程序,如何创建加密和解密对象,如何设置s以及如何在这些流上调用write方法。 编辑 :似乎链接已损坏。看看这里的AESTest