问题标签 [3des]

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

c# - Java SecretKey 并在 C# 中复制它的行为

我正在尝试在 C# 应用程序的 Java 库中复制加密逻辑。

Java 包含两种我设法在 C# 中复制的方法。对于任何数据集,我在每个程序中都得到相同的结果。

Java中生成key和IV的逻辑如下:

假设我有以下内容:

当我构建 secretKey 然后调用 secretKey.getEncoded() 我得到:

因为我不知道 SecretKey 在内部做什么,所以我不知道如何在 C# 中复制它。

我当前的 C# 代码如下所示:

如您所见,我正在使用从未编码的密钥创建的 ivData[]。

一切正常,也就是说,如果我在创建加密器时传递相同的 IV 数据,我会得到相同的加密结果,但不幸的是我无法修改它如何生成它的 IVSpec。

SecretKey 在内部做什么以及如何在 C# 中复制它?

0 投票
1 回答
5289 浏览

java - ISO 9797 填充方法 2 和 java 中的 MAC 生成

我希望你们中的一些人可以在这个问题上帮助我。

我使用 SmartCardShell 程序运行了一个 javascript 代码,该代码从英国电子护照中提取数据。

我正在尝试为我的论文复制 Java 中的代码。但是,我对 MAC 一代感到困惑。

数据加密和 MAC 生成的 javascript 代码是:

我设法正确验证了我的加密密钥(Kenc)是否正确生成。

离开脚本代码,MAC 密钥 (Kmac) 也是一个三重 DES 密钥,通过以下方式完成:

如上所示,javascript 代码使用 Kmac 密钥、DES_MAC_EMV 机制“签署”数据,并使用 ISO 9797 填充方法 2 填充密码数据——我相信这称为“位填充”。

谁能帮助我创建/向我解释 DES_MAC_EMV 机制和 ISO 9797 填充方法 2 的 Java 等效项?

感谢帮助

只是补充一下,因为我忘了提到它,我正在创建一个系统来连接到电子护照并提取数据。此刻,我正在验证从 SmartCardShell 程序/javascript 代码中获得的数据。这不是 javacard 小程序/应用程序,它只是一个 Java“主机”应用程序

汉语水平考试

0 投票
1 回答
2679 浏览

iphone - iPhone和服务器上的3DES加密不同

我有以下代码用于加密我发送到我的服务器的请求。服务器上的解码是由 .NET 完成的,在 iPhone 上,我使用的是带有以下代码的安全框架。

当加密字符串少于 8 个字符时,服务器和 iPhone 上的加密结果相同!之后,它给出了不同的结果。我是一个完全的初学者,有什么关于在哪里看的提示吗?

0 投票
1 回答
546 浏览

c# - 3DES 的密钥大小无效

我正在尝试使用 system.security.cryptography 使用 3DES 解密,但是在提供加密散列进行解密或提供纯文本进行加密时会引发异常。

错误:指定的密钥对于此算法无效。

0 投票
2 回答
1896 浏览

java - 转换为十六进制然后返回正常字符串时出错

我正在使用以下代码进行我正在使用的采样 3DES 加密:

在这里,我尝试获取密码,使用 SHA-1 对其进行哈希处理,然后使用生成的密码作为我的 3DES 的密钥。生成的密码正在转换为十六进制表示,因为我无法保存和检索密码中的奇怪字符。

在解密中,我再次将密码从十六进制转换为普通字符串,然后对其进行解密。但我得到了一个javax.crypto.IllegalBlockSizeException: Input length must be multiple of 8 when decrypting with padded cipher例外。知道我哪里错了吗?

0 投票
0 回答
1826 浏览

php - Perl 中的 TripleDES ECB 加密与 PHP mcrypt 的实现兼容

我正在尝试在 perl 中创建一个包,它等效于我们在 php 中用于处理数据加密的预先存在的类。

加密类型似乎是 ECB 模式下的 TripleDES,但是我无法使用 Crypt::CBC 或 Crypt::TripleDES 复制生成的密码文本。

我认为问题与填充或密钥格式(二进制与十六进制等)有关,但搜索文档并不能帮助我找到答案。

当前的 PHP 类如下(精简但具有相同的核心功能):

我目前的perl包如下:

和测试代码:

每个的输出如下:

php:

perl:

预期的结果是 perl 的加密子例程返回与 php 的加密函数相同的输出,而解密执行相同但相反。

如果 Crypt::TripleDES 是解决这个问题的错误方法,那么我很乐意使用其他东西 - 无论如何,这段代码都会被重新编写成更整洁的东西。

作为旁注,这将需要使用多个密钥长度,因此如果这是一个填充问题,请解释如何根据密钥长度计算正确的填充。

0 投票
2 回答
181 浏览

php - 在客户端和服务器之间加密并发送隐藏的通信

我有一个用 C# 编写的应用程序 winform 客户端和一个用 php 编写的服务器应用程序。

我需要验证客户端在服务器上执行的操作。

当客户端发送此验证时,它会向服务器发送一些信息,例如 LicenseID 、 Info Points 和其他我不想被欺骗的信息。我想防止对服务器的虚假调用。

我使用的第一个解决方案是 3DES,以防止任何人看到我通过 GET 和 POST 方法发送到 php 网络服务器的清晰数据。

现在的问题是,像 LicenseID 和其他一些信息总是相同的。

因此,即使我在 3DES 中对它们进行加密,对于每次调用,这些加密的单词总是相同的,并且很容易被欺骗。

我想知道是否可以发送数据,以便它们在每个 GET 和 POST 方法中看起来不同,我可以在网络服务器中解密。

在提供相同数据的同时,我可以进行哪些更改以使每个呼叫彼此不同?

更新:我忘了说我不能使用 SSL。

0 投票
2 回答
10209 浏览

java - 用于 Java 三重 DES 加密/解密的 PHP 等效项

我正在尝试使用 PHP mcrypt 函数解密由 Java Triple DES 函数加密的密钥,但没有运气。在下面找到java代码

我想写一个与上面decryptText Java函数等效的PHP函数。我发现难以生成由 Java 代码生成的用于加密的确切 IV 值,这是解密所必需的。

0 投票
2 回答
2655 浏览

c# - 无法在用 Java 加密的 .NET 中使用 TripleDES 进行解密

我们有一个 Java 客户端,它向我们发送一些加密数据 1. 使用 RSA 和我们离线提供的公钥对随机字符串进行加密。2. 使用在第 1 步中生成的密钥,他们使用 alg_tripleDES_CBC = http://www.w3.org/2001/04/xmlenc#tripledes-cbc加密数据

我能够像这样从第一步解密密钥......这是有效的。

我有这段代码可以使用第一步生成的密钥解密数据。

第二步因此异常而失败。

我需要与我们的客户核实什么?我知道我们传递给 TDES 的参数有问题。有什么帮助吗?

编辑:加密消息的相应 Java 代码。

0 投票
1 回答
12130 浏览

java - java中的3Des加密/解密

我是 Java 中的安全新手。

我有两个明确的双长度密钥,用于在 Futurex HSM 中生成 ZPK(在 LMK 下)。

下面提到的引脚块是使用 ZPK 加密的。有没有办法在java中使用明文密钥来解密块。

这些加密块之一的解密值是2222