问题标签 [javax.crypto]

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 回答
267 浏览

android - Android 加密库 FIPS 验证

我想知道,android 的密码库 ( javax.crypto) 是否“已通过 FIPS 140-2 验证”?

我需要 FIPS 很重要的特定产品。

0 投票
2 回答
2199 浏览

java - 自 Android 6 Marshmallow 以来,javax.crypto.Cipher 的工作方式有所不同

我已经成功地使用 javax.crypto.Cipher.getInstance("DESede/CBC/NoPadding") 在 Android 上使用 DESFire 卡进行身份验证(按照此处的示例:https ://stackoverflow.com/a/14160507/2095694 )。它一直在从 Android 4 到 5 的几台设备上运行,但在我更新到 6 Marshmallow(和 6.0.1)的 Nexus 7 上停止工作。在更新之前,它一直在同一台设备上工作。

似乎 Cipher 的工作方式不同,对相同的密钥和数据给出不同的结果。运行以下代码...

...给我以下输出:

正常价值,应该是什么,总是有效的,并且卡最终可以正确验证,所以它按照卡的预期方式进行。如前所述,我在几种设备(Android 4 和 5)上进行了尝试,它们给出了相同的结果。

但是现在在我的 Nexus 7 上使用 Marshmallow 我得到了其他东西(并且身份验证最终失败)

图书馆有什么变化吗?

0 投票
2 回答
4333 浏览

java - Key 和 KeySpec 有什么区别?

在 Java 加密库中,密钥有两种不同的表示形式 -KeyKeySpec. 文档暗示两者之间存在差异 - aKeySpec是“透明的”(无论这意味着什么),但没有方法,而KeygetEncoded方法。您打算使用 aKeyFactory在两者之间进行转换(它确实有一种getKeySpec转换方法)。

但是,SecretKeySpec同时实现KeyKeySpec!但是也有一个SecretKeyFactory类,它不会继承 off KeyFactory

这一切让我彻底迷茫了。Keya和 a之间有什么区别,以及KeySpec如何进入它?SecretKeySpecSecretKeyFactory

0 投票
1 回答
803 浏览

java - (BouncyCastle 错误:min 可能不大于 max)使用 java 实现 El-Gamal 算法

我正在尝试在系统中实现 El-Gamal 加密算法。我刚刚了解了该算法,并在互联网上查找了代码以获得实现它的想法。我在互联网上找到了以下代码并给了我这个奇怪的错误:

这是代码段:

我对密码学很陌生,这可能很愚蠢。如果这个问题太愚蠢,我很抱歉。并提前感谢。

0 投票
2 回答
10646 浏览

java - 使用 CryptoJS 解密 AES/CBC/PKCS5Padding

AES/CBC/PKCS5Padding我使用 Java javax.cryptoAPI生成 128 位密钥。这是我使用的算法:

我可以通过这些方法使用 secretKey 轻松加密和解密消息。由于 Java 默认使用 128 位 AES 加密,因此它使用 SHA1 生成原始密钥的散列,并将散列的前 16 个字节用作 AES 中的密钥。然后它以 HEX 格式转储 IV 和 cipherText。

例如encryptAES("test", "test")生成CB5E759CE5FEAFEFCC9BABBFD84DC80C0291ED4917CF1402FF03B8E12716E44C,我想用 CryptoJS 解密这个密钥。

这是我的尝试:

但是它返回一个空字符串。

0 投票
1 回答
536 浏览

java - 解密困难:错误是 BadPaddingException:给定最终块未正确填充

试图解密压缩文件。有些工作,有些则没有。那些不起作用的在尝试关闭 ZipInputStream 时会给出错误。

在用户计算机上创建文件时这工作正常,但我想避免这种安全风险。我以为我最终通过删除文件处理了所有风险,但目睹了文件未被删除的情况。因此,我想完全避免这种可能性。使用使用流来解密和解压缩以限制内存使用?让我的代码达到这一点。

我已经阅读了几个关于填充等的地方,但我承认我已经继承了这段代码并且我仍在学习曲线上。

我得到的错误在下面并被抛出在最后一行(try-with-resources 块的末尾。

我已经调试并浏览了代码。引发此错误的文件未加密并解压缩并正确读取。所有数据都被读出,“行”在各个方面都是完整的。它只是不会关闭 ZipInputStream。有任何想法吗?

0 投票
1 回答
1641 浏览

java - Android Studio 2.1.2 NoClassDefFoundError 无法初始化类 javax.crypto.*

我在论坛上搜索了我的问题的解决方案,但相关问题及其解决方案对我不起作用。

我已经安装了带有 Android Sdk 23 的 Android Studio 2.1.2 来创建应用程序,但是当 Android Studio 启动时会触发错误:NoClassDefFoundError: Could not initialize class javax.crypto.JceSecurityManager当我尝试生成 APK 时也会出现类似的错误

应用规格:

  • 安卓工作室 2.1.2
  • 安卓 SDK 23
  • Java SDK 1.8
  • Java JRE 1.8.0_91(最近更新)

我的 JRE 中存在以下 JAR 文件:

JRE/lib/security/local_policy.jar

JRE/lib/security/US_export_policy.jar

这是错误代码:


当我按下Generate Signed APK时触发了类似的错误...

我感谢您的帮助

0 投票
1 回答
3900 浏览

java - Nodejs Crypto Javascript 中的 javax.crypto.Cipher 等效代码

我正在尝试将下面的java代码转换为nodejs。

这是我能够弄清楚的 -

我无法获得相同的输出。例如,如果

令牌 = “abcdefgh”

Java 代码输出 -bc02de7c1270a352a98faa686f155df3

Nodejs 代码输出 -eae7ec6943953aca94594641523c3c6d

我从这个答案中读到默认加密算法是不需要IV的aes-ecb 。由于密钥长度为 16,我假设aes-128-ecb(16*8 = 128) 是我应该使用的算法。

有人可以帮我解决问题吗??

0 投票
1 回答
1071 浏览

java - 使用 Proguard GUI 混淆没有配置文件的类

我混淆了我的 Java 代码,我使用的是 Proguard 5.2.1。但是,在使用 GUI 时,出现了一个警告:

我尝试使用-dontwarn选项在命令行上运行它,但混淆不起作用。我也尝试过以下方法:

有没有办法阻止 proguard 隐藏 javax.crypto.SecretKey 类?我正在寻找一个 GUI 解决方案,而不是通过配置文件。我的 java 代码不适用于 android,是一个保护服务器和客户端之间传输的程序。

0 投票
1 回答
931 浏览

java - Android N InvalidKeyException

我有一个仍以 Android 6.0 为目标的应用程序,但在尝试在 Android N 上安装时出现加密错误(我也尝试以 N 为目标)。这是堆栈跟踪:

如您所见,它发生在调用 Cipher.init 时。这是我的 aesDecrypt 方法:

还有我的 getAesKey:

我已经验证我在 c.init 中传递的密钥不为空。为什么这在运行 7.0 的手机上不起作用?


[编辑评论]

上面的代码使用: