问题标签 [tripledes]

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

c# - C# 三重 DES 加密解密 Informix ENCRYPT_TDES 函数

我有来自 Informix 数据库的数据,该数据库有一列包含使用 Informix 函数 ENCRYPT_TDES 加密的数据。数据已导入 SQL SERVER 2008,我不再有权访问正在运行的 Informix 实例。我需要编写一个 C# 或 VB.NET 函数来解密该数据。任何人都知道如何编写一个 C# 函数来解密它?

0 投票
2 回答
4346 浏览

php - 在 PHP 中用 C# 解密一个字符串编码的 3DES

我必须在 PHP 中解密一个用这个 C# 类编码的字符串(它在这里

我尝试了在网上找到的不同示例,但似乎没有任何效果。我认为第一个问题来自 php mcrypt_generic_init 中的 $iv 参数,然后另一个问题来自 php 函数中缺少的填充。你能帮我在PHP中转换上面的c#Decrypt函数吗?谢谢你。

0 投票
1 回答
1404 浏览

encryption - TripleDES解密截断最后一个字符

我有一个实现 TripleDES 加密和解密的 .NET 类。代码太多,无法在此处发布。但是,问题在于,虽然加密是可以的,但根据原始明文的长度,解密是不一致的。我知道加密是可以的,因为其他三重 DES 工具也提供相同的价值。

具体来说,如果原始明文的长度为 8、16、24、32、40 等,即 8n,则最后一个字符将从生成的纯文本中删除。

加密模式为 CBC 密钥大小为 24 个字符(192 位) IV 为 8 个字符

0 投票
1 回答
4318 浏览

vb.net - VB.Net DES加密功能,转三重DES

这是我目前的 DES 加密,但由于我对 VB.Net 还很陌生,我可以弄清楚如何使它使用三重 DES 而不是 DES

0 投票
2 回答
796 浏览

c# - PHP 中的 MACTripleDES

我正在尝试获得与 C#MACTripleDES类等效的 MAC TripleDES。

我试过关注mcrypt(),但这只是在 TripleDES 中编码。我需要获得一个等效的 MACTripleDES 字符串作为在 C# 中生成的字符串来验证消息。

我还查看了 PHP 的hash_hmac()函数,但它没有提供使用 TripleDES 生成 MAC 的选项

0 投票
1 回答
2775 浏览

php - 如何在 PHP 中使用 TripleDes 对文件进行加密和解密

我找不到关于这个主题的足够资源,我需要学习如何在 PHP 中使用 TripleDes 加密和解密文件(上传时应该加密文件,下载文件时应该解密)。

我也找到了一些例子,但我无法实现它 http://php.net/manual/en/mcrypt.examples.php http://stackoverflow.com/questions/10548386/issue-with-encrypt-and-decrypt -a-word-docx-file-in-php

感谢您的兴趣。

0 投票
2 回答
4986 浏览

.net - 使用三重 DES 解密信息时出现错误数据

我正在通过.Net开发一个mvc应用程序,以保护我的敏感信息,例如web.config中的信息我有两个使用Triple DES加密和解密信息的函数,但是我对此并不陌生并成功达到在朋友的帮助下。

加密功能工作正常并返回正确的字符串但是当我尝试解密我得到的相同字符串时

Exception Details: System.Security.Cryptography.CryptographicException: Bad Data.

解密函数这一行的错误:

Results = Decryptor.TransformFinalBlock(DataToDecrypt, 0, DataToDecrypt.Length);

我试图以我作为注释代码包含的几种方式来解决它,但他们没有帮助,请帮助我解决这个问题。

0 投票
0 回答
6111 浏览

java - DUKPT 使用 Java 实现过程以及如何将十六进制字符串转换为 DES 密钥(ByteArray)

我正在尝试实现 VISA DUKPT 算法以从事务 KSN 生成每个事务的唯一密钥。我已逐步遵循 ANS X9.24-1:2009 提供的信息,但我得到的 IPEK 与示例中提供的不同。对于加密/解密/加密,我使用的是充气城堡 API。示例中提供的密钥 (BDK) 是 0123456789ABCDEFFEDCBA9876543210 我知道这是双重加密密钥长度,这意味着

  • key1(加密DES)= 0123456789ABCDEF
  • key2(解密 DES)= FEDCBA9876543210
  • key3(加密DES)=key1=0123456789ABCDEF

我知道在使用 DES 时,您只能使用 8 字节密钥,以便将 16 个十六进制字符串转换为 8 字节数组。(我怀疑我是否在这里做某事。我从教程中得到这部分代码)

这是我目前唯一有疑问的部分(如何将十六进制字符串转换为 Java 中的 DES 密钥(ByteArray))。对于 TripleDES 的实现,我正在使用充气城堡。

IPEK的计算过程描述如下:

从基本派生密钥 (BDK) 派生初始密钥 (IPEK)。

初始 PIN 输入设备密钥(最初加载到 PIN 输入设备中的密钥)由以下过程生成:

  • 将整个密钥序列号,包括 21 位加密计数器,右对齐复制到 10 字节寄存器中。如果密钥序列号小于 10 个字节,则在左侧填充十六进制“FF”字节。
  • 将此 10 字节寄存器的 21 个最低有效位设置为零。
  • 取这个 10 字节寄存器的 8 个最高有效字节,并使用双长派生密钥对这 8 个字节进行加密/解密/加密。使用步骤 3 生成的密文作为 Initial Key 的左半部分。
  • 从步骤 2 的 10 字节寄存器中取出 8 个最高有效字节,并使用与十六进制 C0C0 C0C0 0000 0000 C0C0 C0C0 0000 0000 异或的双长度派生密钥作为密钥对这 8 个字节进行加密/解密/加密。
  • 使用第 5 步产生的密文作为 Initial Key 的右半部分。

我逐字逐句地按照前面的解释,我得到了钥匙的左半部分

67450505DF3A84FF

根据标准的期望值为

6AC292FAA1315B4D

提供的 KSN 为 9876543210E00000

在开始加密/解密/加密之前按照步骤 1-3 之后,要处理的文本是:FFFF9876543210E0

我的 TripleDES 实现是:

如您所见,我尝试使用 ECB 模式作为标准推荐以及 CBC 模式,IV 为 00000000,但这两种方法似乎都不起作用。

请我需要一个建议。

0 投票
2 回答
2933 浏览

c# - C# 中 TripleDES CFB 上的 16 位块大小

我正在用 C# 编写一个应用程序,它需要解密一些由一些旧软件加密的数据。遗留代码以 8 个为一组循环遍历未加密的字节,并在 CBC 模式下通过 TripleDES 对它们进行加密。然后,它使用 TripleDES CFB 处理剩余字节,使用剩余量的块大小(在此特定情况下为 2)。

我可以使用 System.Security.Cryptography.TripleDES 在 C# 中对第一阶段的数据进行解密,因为它允许块大小为 64 位(8 字节)。然而,TripleDES 类不允许16 位的块大小。以下代码会引发错误,提示“指定的块大小对此算法无效”:

我假设这是由于小块大小的弱性质而存在的。不幸的是,这就是我所坚持的。是否有任何免费的第三方库可能支持 TripleDES/CFB 的 16 位块大小?或者我可以在这个数据集上使用什么技巧来完成这项工作?我检查了 DES 类,看它是否支持 16 位块大小,但没有骰子......

我不是密码学专家,所以如果我最终不得不为 TripleDES 编写自己的代码(超过 2 个字节......grrr),任何关于算法细节的直截了当的文章都会非常有帮助。

0 投票
1 回答
618 浏览

c# - 在解密期间处理不良数据(TripleDES、.NET)

我为用户编辑文件的系统设置了 enc/dec 进程。如果加密文件被恶意修改,我希望能够处理它并说“哦解密失败,将从一个干净的文件开始”......类似的东西。但我不确定如何以不停止程序执行的方式处理异常。

重申一下,我在解密完全有效的数据方面没有问题。我遇到了带有实际错误数据的错误数据错误,我只是想知道如何优雅地处理它。发生错误时,CryptoStream 无法关闭文件,因此我无法用纯文本文件覆盖它或将其用于任何其他内容。

顺便说一句,这是 LabView 中使用的 .NET 代码。不能在这里粘贴代码。