问题标签 [block-cipher]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
977 浏览

java - cipher.doFinal(...) 失败,而 cipher.update(...) 成功

我正在尝试使用以下代码解密字节数组。为简洁起见,我省略了异常处理和其他实践:

注意:Java 本身不支持 PKCS7Padding,但我确实通过添加安全 BouncyCastleProvider 使其工作。为了争论, PKCS5Padding 有同样的问题。

问题:

doFinal throws 抛出BadPaddingException: pad block corrupt。但是,如果我用update替换doFinal,那就是:

它完美地工作。结果符合预期。

有人可以帮我理解有什么区别以及如何使 doFinal 工作吗?如果需要更多信息,请告诉我。

0 投票
1 回答
1969 浏览

java - 如何在 Java 服务器的 SSL 中禁用 112 位密码套件

如何在 java 应用程序服务器中禁用不安全的 112 位密码套件,特别是这些:

我已经编辑了java.security文件并添加了jdk.tls.disabledAlgorithms=SSLv3, MD5withRSA, DH keySize < 2048,但仍然列出了这些算法。

我还想通过禁用来防止降级攻击TLS_FALLBACK_SCSV

我怎样才能做到这一点?

0 投票
1 回答
324 浏览

cryptography - 了解适应度函数

我正在使用遗传算法来破解转置密码。因此,在这项工作中,我遇到了 R. Toemeh 和 S. Arumugam的一篇名为Breaking Transposition Cipher with Genetic Algorithm的论文。

在本文中,他们使用了适应度函数。但我无法完全理解。我无法理解方程中 β 和 γ 的函数。

谁能解释一下健身功能吗?这是适应度函数的图片:

Toemeh & Arumugam 算法的适应度函数

0 投票
0 回答
772 浏览

java - AES 密码 - javax.crypto.IllegalBlockSizeException 使用填充密码解密时,输入长度必须是 16 的倍数

我创建了一个使用 AES 密码加密和解密字符串的类。

但是当我运行我的加密方法时,我得到一个 javax.crypto.IllegalBlockSizeException 错误

完整堆栈:

CipherEncrypter 类:

加密器类:

编辑:

现在得到另一个错误:

0 投票
1 回答
151 浏览

encryption - 在 Java Card 框架中集成自定义分组密码

我用 Java Card 语言创建了一些轻量级密码,现在我想将它们集成到 Java Card API 中。我注意到javacardx.crypto.Cipher以及javacard.security.Key类。但在我看来,如果我扩展Cipher类并实现所有这些方法,我仍然需要一种方法将我的密码常量添加到内部框架中以完全集成密码。有没有好的方法来做到这一点?

0 投票
0 回答
257 浏览

java - Key Interface & SecretKeySpec 具体;使用 Key 还是 SecretKeySpec?

我一直在编写javax.crypto.Cipher代码,并且 StackOverflow 回答了很多问题,所以我很欣赏这个站点中包含的信息。我确实有一个问题,我在这个网站上没有找到答案。

以下代码生成一个 SecretkeySpec:

encryptionKey 是一个带有“AES”算法的 SecretKeySpec。

我是否应该明确说明“SecretKeySpec”的使用,例如

或者我所做的是否足够。从代码长度的角度来看,我可以看到一个优势。

0 投票
2 回答
8204 浏览

c++ - 使用 aes_256_cbc 密码加密时的默认 IV 是什么?

我在一个文件中生成了一个随机的 256 位对称密钥,用于使用 OpenSSL 命令行加密一些数据,稍后我需要使用 OpenSSL 库以编程方式对其进行解密。我没有成功,我认为问题可能出在我正在使用(或未使用)的初始化向量中。

我使用以下命令加密数据:

我正在使用以下调用来初始化数据的解密:

keyfile是一个vector<unsigned char>保存 32 个字节的密钥。我的问题是关于最后一个参数。它应该是密码算法的初始化向量。加密时我没有指定 IV,所以必须使用一些默认值。

为该参数传递 nullptr 是否意味着“使用默认值”?默认为空,第一个密码块中没有添加任何内容?

我应该提一下,我可以在不提供 IV 的情况下从命令行解密。

0 投票
1 回答
286 浏览

java - Java中的密文窃取

所以我有一个学校项目,我遇到了一些麻烦。我们得到了加密方法,然后被要求为其创建一个解密方法。

因此,当字符串长度恰好为 16(2 个块)时,我已经使解密方法起作用。其他带有偶数块(8 的倍数)的字符串不起作用,24、32...等。部分块也不起作用;如果我加密一个长度为 18 的字符串并再次解密,最后 2 个字符总是错误的。任何帮助深表感谢!这是我的解密方法:

如果需要任何其他信息,请告诉我......我真的很难过这个。

编辑:附加方法和类 storeLongAt() 和 longAt():

和 BlockCipher64 类:

0 投票
2 回答
5064 浏览

encryption - 在golang中向字节切片添加填充的正确方法?

我正在尝试加密一些数据,但它几乎从来都不是正确的cipher.BlockSize

是否有“内置”方法来添加填充,或者我应该使用函数手动添加它?

这是我现在的解决方案:

0 投票
2 回答
4123 浏览

encryption - 如何在 golang 中使用 AES256-GCM 加密文件?

AES256-GCM 可以在https://gist.github.com/cannium/c167a19030f2a3c6adbb5a5174bea3ff中实现

但是,Seal接口的方法cipher.AEAD有签名:

所以对于非常大的文件,必须将所有文件内容读入内存,这是不可接受的。

一种可能的方法是在and上实现Reader/Writer接口,但这不应该由 AEAD 的那些分组密码“模式”来解决吗?所以我想知道这是golang cipher lib的设计错误,还是我错过了GCM的一些重要内容?SealOpen