问题标签 [cbc-mac]

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 投票
3 回答
8942 浏览

algorithm - C# 中的 ISO 9797-1 算法 1 [CBC-MAC]

CBC-MAC算法似乎有6种变体。我一直在尝试匹配 PINPad 1000SE 上的 MAC 算法 [根据手册是 ISO 9797-1 算法 1]。

我从这里有了一个很好的开始。

我将算法编码如下:

然后我发现有 3 种填充方案,而让我开始的那个可能不一定是正确的。手册又来救我了。似乎该设备仅用 0 填充。也没有提到其他块,所以我做了以下更改:

没有额外的块(如果 mod 0 [可被 8 整除] 不改变数组长度)

最初的建议希望我在第二步解密......但这里的 Valery 建议它一直加密。所以我将解密更改为加密。但我仍然无法获得必要的 MAC ......

手册说密钥“6AC292FAA1315B4D8234B3A3D7D5933A”[因为密钥应该是 16 个字节,我认为这里的密钥是十六进制字符串,所以我取了 6A、C2、92、FA 的字节值 ... new byte[] { 106, 194, 146, ...] 如果消息是 [0x1a + MENTERODOMETER 的字节数组],MAC 应该是 7B,40,BA,95 [4 个字节]

有人可以帮忙吗?请?


由于 Pinpad 要求消息中的第一个字符是 0x1a...

我用这个输入调用上面的代码:

0 投票
2 回答
2857 浏览

cryptography - 使用一键加密和 HMAC

我想知道我是否也可以使用在两个客户端之间建立的共享密钥作为 HMAC 密钥。

我发现当它用作 CBC-MAC 时存在问题,但我没有发现任何证据表明这对 HMAC 来说是不好的做法。

谢谢,弗拉基米尔

0 投票
0 回答
1304 浏览

iphone - JAVA DES/CBC/PKCS5Padding如何加密转换成iPhone?

0 投票
2 回答
5013 浏览

c# - 如何使用 DES 实现 CBC-MAC?

我应该在 C# 中实现一个 MAC-CBC 生成方法,其中包含一些有关密码算法的信息。这是我所拥有的:

  • 我应该使用 DES。
  • 关键是byte[] {11, 11, 11, 11, 11, 11, 11, 11}
  • 数据(16 字节)应按 8 字节部分加密。Instance Vector = new byte[8]前 8 个字节使用(8 个字节,值为 0)加密。(加拿大广播公司?)
  • 加密值的最后 8 个字节应转换为十六进制字符串。这是我应该发送的结果。

有了这些信息,我实现了以下方法:

他们提供给我的样本原始数据是:input=byte[] {0, 6, 4, 1, 6, 4, 1, 7, E, E, F, F, F, F, B, B)应该返回 value: 的输出A7CBFB3C730B059C。这意味着加密数据的最后八个字节应该是:byte[] {167, 203, 251, 60, 115, 11, 05, 156}.

但不幸的是,使用上述方法,我得到:32D91200D0007632. 意味着我的加密数据不正确。(我的方法生成的加密值的最后八个字节是byte[] {50, 207, 18, 0, 208, 0, 118, 50})。

有什么方法可以让我知道我应该怎么做才能到达 A7CB...?难道我做错了什么?

0 投票
1 回答
1161 浏览

c++ - 通过矩阵乘法加密

从事基于简单矩阵乘法加密的大学项目。

项目大纲是这样的;

文本文件到矩阵乘以加密密钥矩阵 = 加密文件。

加密文件到矩阵乘以密钥矩阵的倒数 = 解密文件。

但我想更进一步,能够处理任何文件(文本、mp3、gif 等)。

我已经研究了几个小时试图解决这个问题,并且开始有点沮丧。

我能想到的最好的方法(也是唯一的方法)是让程序读取原始二进制文件并对其执行加密。

所以-->问题:

  1. 我可以从文件中提取原始二进制文件,放入矩阵,执行矩阵乘法并(基本上)将二进制文件写回文件吗?

  2. 另外,这种方法在不同的计算机和平台上的可行性是什么?(我在想,也许如果我从二进制转换为 int 并在解密时转换回来,它可能会改变——不同计算机上的不同大小分配等?)

另外,欢迎我就更好的解决方案发表意见

---> 但基本算法应该是基于矩阵乘法的。

我的代码:

我得到的错误:

0 投票
1 回答
10903 浏览

aes - GCM、CCM 或 CBC-MAC 模式下的 AES 密码?

我一直在寻找一篇用外行术语描述这些模式的文章,但还没有发现任何有用的东西。那么,每种模式的优缺点是什么?谢谢

GCM

CCM

CBC-MAC

0 投票
1 回答
830 浏览

objective-c - Objective c 中 java CBCBlockCipherMac 的示例实现

任何人都可以分享一个关于如何在目标 C 中实现 CBCBlockCipherMac 的示例代码。这是我走了多远,它给出了与 java 实现不同的结果。

我的java代码看起来像这样

这给了我“391d1520”。但是目标c给了我“01000000”

0 投票
0 回答
413 浏览

javascript - 将 CBC-MAC 与 CryptoJS 一起使用

如何使用 CryptoJS 生成具有三重 DES 的 CBC-MAC(*非 HMAC)分组密码。我似乎无法在文档中找到它。

0 投票
1 回答
1361 浏览

java - CBC-MAC AES 自己的实现极慢

对于一个项目,我需要在 Android(使用 java)中实现一个从文件生成 CBC-MAC(AES)的函数。因此,基本上该函数从文件中获取不同的“块”并计算每个块的标识符,最后将其组合成整个文件的标识符。

该功能效果很好,但是,对于较大的文件,由于实现了循环,它非常慢(可能需要几分钟到几小时)。但是,我对密码学的了解并不多,所以我不确定如何提高速度,甚至是否可能。输出给出的 CBC-MAC 与使用不同编程语言的其他库完全相同,因此可以正常工作。

不幸的是,我在使用外部库方面非常有限。虽然来自 bouncycastle 的类 CBCBlockCipherMac 是可能的,因为我只能将它包含在几个依赖项中,但从来没有得到它提供与下面提到的函数相同的输出。

欢迎所有反馈,我已经尝试解决它 3 天,但无法弄清楚。谢谢!

*更新似乎 for 循环中的函数 str_to_a32(每 16 个字节循环)导致了最大的速度问题。因此,如果该功能可以更快,它将主要解决问题。此外,不幸的是,每 16 个字节循环一次是必要的,因为我正在实现与云提供商 Mega 相同的 CBC-MAC 功能。

编码

0 投票
2 回答
3065 浏览

encryption - CBC-MAC解密,MAC如何在加密中工作

我刚刚想出了信用卡的三重DES加密和解密。谁能告诉我如何解密 CBC-MAC...CBC-MAC 最后会给出一个 4 字节的 MAC。从 MAC 到加密,它究竟是如何工作的?MAC在做什么?

一旦通过 CBC-MAC 完成加密,我们如何解密它们?Triple-DES 不适用于我的情况。

这里还有一个问题。你们都听说过任何涉及的解密算法吗:

  • 杜克普
  • TDES,和
  • MAC 变体(相对于 PIN 变体)

我对 TDES 和 DUKPT 有很好的了解,但是 MAC 变体如何在解密算法中发挥作用?

MAC 变体与 PIN 变体有何不同?

谢谢!