问题标签 [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 投票
6 回答
188426 浏览

java - 如何在 Java 中使用 3DES 加密/解密?

我编写的使用 3DES 在 Java 中对字符串进行编码的每个方法都无法解密回原始字符串。有没有人有一个简单的代码片段可以只编码然后将字符串解码回原始字符串?

我知道我在这段代码的某个地方犯了一个非常愚蠢的错误。到目前为止,这是我一直在使用的:

** 注意,我没有从 encrypt 方法返回 BASE64 文本,我也没有在解密方法中取消 base64 编码,因为我试图查看我是否在拼图的 BASE64 部分中犯了错误。

0 投票
1 回答
6413 浏览

c# - 使用三重 DES 时的加密数据大小

我打算在我的一个项目中使用 TripleDES。我正在做一些实验以适应它。我知道三重 DES 的块大小是 8 个字节,所以我假设如果给出 8 个字节的数据,我应该得到 8 个字节的加密数据。但我得到的是:

正常吗?这是它应该工作的方式。以下是我尝试使用三重 DES 的方法:

0 投票
2 回答
7077 浏览

php - 使用 MCrypt 解密密文(3DES CBC 模式)

我有一个密文,以 3DES CBC 模式加密,但我在解密它时遇到了一些麻烦。我有以下信息(不是实际值):

我的解密函数基于这篇博文中的 PHP 类。它看起来像这样:

但是,我不确定如何将三个键输入算法。我尝试将它们链接在一起,如下所示:$key1.$key2.$key3,并以相反的顺序,但无济于事。

任何帮助,将不胜感激。

0 投票
6 回答
59960 浏览

c# - 如何在 C# 中使用 RSA 加密文件(大数据)

我是加密新手。我需要实现非对称加密算法,我认为它使用私钥/公钥。我开始使用 RSACryptoServiceProvider 的示例。可以加密小数据。但是当在相对较大的数据“2行”上使用它时,我得到异常 CryptographicException “Bad Length”!

然后我找到了一些使用 CryptoStream 加密大数据(或文件)的示例,并且只使用了 DES 或 3DES 等对称算法,这些算法具有 CreateEncryptor 函数以返回 ICryptoTransform 作为 CryptoStream 构造函数的输入之一!!!

使用 RSA 加密文件的方法是什么?

0 投票
1 回答
572 浏览

.net - 如何包装/存储 TripleDESCryptoServiceProvider 的密钥

我正在使用 DES 加密,我想存储 TripleDESCryptoServiceProvider 的密钥。

但是密钥由(Key + IV)组成,

我试图将它们保存在 XML 文件中

但由于 IV 在 XML 中包含无效字符“=”而出现异常。

有没有更好的方法来存储对称加密密钥?

0 投票
1 回答
2476 浏览

encryption - 为什么更改三重 DES 密钥或初始值中的一位不会给出不同的加密数据?

我正在使用 pyDes 加密一些数据。我想证明,即使您更改密钥或初始值中的一位,加密的数据也会完全不同。我设置了 16 字节密钥以将最后一个字符更改 +/- 1,从而导致至少一位不同。但是,即使我这样做了,3 个不同的加密数据实例也并非完全不同。

如果我只对键或初始值进行小的更改,其中一个断言似乎会失败;我已经看到了两者d1 != d2并且d1 != d3失败取决于我改变什么。我还尝试更改'Hello''Hello' * 50确保不仅仅是输入数据太短的情况。

如果我制作完全随机的键,则断言通过。使用如上所示的程序,d1 != d3失败(这些键相距一位;k1-k2 相差 2 位)。

我绝不是加密专家,但如果两个密钥仅相隔一位就产生相同的加密数据,那么这意味着暴力破解密钥所需的努力只是减少了两倍,对吧?

我错过了一些明显的东西吗?Triple DES 是否不应该为非常相似的密钥提供唯一的结果?或者这是 PyDes 中的一个错误?也许其他人可以在另一个实现中确认这种行为?


@Chris Jester-Young 的答案是密钥中的某些位是奇偶校验位。事实证明,根据这篇文章

请注意,虽然 DES 的输入密钥长度为 64 位,但 DES 使用的实际密钥长度仅为 56 位。每个字节中的最低有效(最右边)位是奇偶校验位,应设置为每个字节中始终有奇数个 1。这些奇偶校验位被忽略,因此仅使用每个字节的七个最高有效位,导致密钥长度为 56 位。这意味着三重 DES 的有效密钥强度实际上是 168 位,因为三个密钥中的每一个都包含 8 个在加密过程中不使用的奇偶校验位。

(重点是我的)

这些奇偶校验位正是我在示例中更改的位。

谢谢克里斯!

0 投票
1 回答
291 浏览

vb.net - 在 vb.net 中实现 des-ede2

谁能帮我开始这个?我们有一组在 C++ 中使用 des-ede2 的应用程序的当前密钥生成器。

我需要让我的 vb.net 应用程序验证该密钥生成器生成的密钥。任何人有任何想法从哪里开始?

我像疯了一样在谷歌上搜索,但希望有人能指出我正确的方向。

谢谢!

0 投票
3 回答
5270 浏览

iphone - iPhone --- 3DES 加密返回“错误”结果?

我在使用 CommonCrypto 函数时遇到了一些严重的问题。BlackBerry 和 Windows Mobile 现有两个应用程序,它们都使用具有 ECB 模式的 Triple-DES 加密进行数据交换。在任一加密结果上都是相同的。

现在我想在我们的 iPhone 应用程序中实现 3DES 加密,所以我直接使用 CommonCrypto: http://www.opensource.apple.com/source/CommonCrypto/CommonCrypto-32207/CommonCrypto/CommonCryptor.h

如果我使用 CBC 模式,我会得到一些结果,但它们与 Java 或 C# 的结果不对应。无论如何,我想使用 ECB 模式,但我根本不让它工作 - 出现参数错误......

这是我对欧洲央行模式的呼吁......我把它剥离了一点:

t 或多或少是这里的代码:http://discussions.apple.com/thread.jspa?messageID=9017515 但如前所述,我每次都会收到参数错误...

当我使用 kCCOptionPKCS7Padding 而不是 kCCOptionECBMode 并在 C# 和我的 iPhone 代码中设置相同的初始化向量时,iPhone 会给我不同的结果。从 bufferPtr 获取我的输出是否有错误?目前我以这种方式获得加密的东西:

似乎我几乎尝试了每个设置两次,不同的编码等等......我的错误在哪里?

0 投票
4 回答
14622 浏览

c# - Java 中的 .NET TripleDESCryptoServiceProvider 等效项

请不要问我为什么。我只是在 .NET 中有这个代码来加密/解密数据字符串。我现在需要在 java 中实现“完全”相同的功能。我已经为 DESede crypt 尝试了几个示例,但没有一个给出与 .net 中的此类相同的结果。

我虽然在 ssl 后面制作了一个 .net webserbvice 来为这两种用 .net 编写的方法提供服务,但如果不耗尽所有可能性,这样做太愚蠢了。

也许你们中的一些在该领域更相关的 Java 人会想到如何制作它。

谢谢 !!!


样本输入/输出

0 投票
2 回答
5719 浏览

vb.net - TripleDES 加密 - .NET 和 ColdFusion 玩得不好

我正在尝试使用 TripleDES 在我的 ASP.NET 应用程序和另一个开发人员的 CF 应用程序之间交换加密数据。

这是他的 CF 代码(当然是虚构的密钥和 IV):

这是我的 VB.NET(我省略了异常处理等):

我们得到了不同的结果。

显而易见的事情是他使用 Base64 从密码创建 IV,而我使用的是 ASCII - 但如果我这样做

然后 .NET 不高兴,因为它为 IV 获取了一个 6 字节的数组并且它需要 8 个字节。

任何想法我们做错了什么 - 最好是我可以对我的(VB.NET)代码进行更改以使其工作?或者如果做不到这一点,另一种方法可以在两种环境之间更好地工作?