问题标签 [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.
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...
我用这个输入调用上面的代码:
cryptography - 使用一键加密和 HMAC
我想知道我是否也可以使用在两个客户端之间建立的共享密钥作为 HMAC 密钥。
我发现当它用作 CBC-MAC 时存在问题,但我没有发现任何证据表明这对 HMAC 来说是不好的做法。
谢谢,弗拉基米尔
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...?难道我做错了什么?
c++ - 通过矩阵乘法加密
从事基于简单矩阵乘法加密的大学项目。
项目大纲是这样的;
文本文件到矩阵乘以加密密钥矩阵 = 加密文件。
加密文件到矩阵乘以密钥矩阵的倒数 = 解密文件。
但我想更进一步,能够处理任何文件(文本、mp3、gif 等)。
我已经研究了几个小时试图解决这个问题,并且开始有点沮丧。
我能想到的最好的方法(也是唯一的方法)是让程序读取原始二进制文件并对其执行加密。
所以-->问题:
我可以从文件中提取原始二进制文件,放入矩阵,执行矩阵乘法并(基本上)将二进制文件写回文件吗?
另外,这种方法在不同的计算机和平台上的可行性是什么?(我在想,也许如果我从二进制转换为 int 并在解密时转换回来,它可能会改变——不同计算机上的不同大小分配等?)
另外,欢迎我就更好的解决方案发表意见
---> 但基本算法应该是基于矩阵乘法的。
我的代码:
我得到的错误:
aes - GCM、CCM 或 CBC-MAC 模式下的 AES 密码?
我一直在寻找一篇用外行术语描述这些模式的文章,但还没有发现任何有用的东西。那么,每种模式的优缺点是什么?谢谢
GCM
CCM
CBC-MAC
objective-c - Objective c 中 java CBCBlockCipherMac 的示例实现
任何人都可以分享一个关于如何在目标 C 中实现 CBCBlockCipherMac 的示例代码。这是我走了多远,它给出了与 java 实现不同的结果。
我的java代码看起来像这样
这给了我“391d1520”。但是目标c给了我“01000000”
javascript - 将 CBC-MAC 与 CryptoJS 一起使用
如何使用 CryptoJS 生成具有三重 DES 的 CBC-MAC(*非 HMAC)分组密码。我似乎无法在文档中找到它。
java - CBC-MAC AES 自己的实现极慢
对于一个项目,我需要在 Android(使用 java)中实现一个从文件生成 CBC-MAC(AES)的函数。因此,基本上该函数从文件中获取不同的“块”并计算每个块的标识符,最后将其组合成整个文件的标识符。
该功能效果很好,但是,对于较大的文件,由于实现了循环,它非常慢(可能需要几分钟到几小时)。但是,我对密码学的了解并不多,所以我不确定如何提高速度,甚至是否可能。输出给出的 CBC-MAC 与使用不同编程语言的其他库完全相同,因此可以正常工作。
不幸的是,我在使用外部库方面非常有限。虽然来自 bouncycastle 的类 CBCBlockCipherMac 是可能的,因为我只能将它包含在几个依赖项中,但从来没有得到它提供与下面提到的函数相同的输出。
欢迎所有反馈,我已经尝试解决它 3 天,但无法弄清楚。谢谢!
*更新似乎 for 循环中的函数 str_to_a32(每 16 个字节循环)导致了最大的速度问题。因此,如果该功能可以更快,它将主要解决问题。此外,不幸的是,每 16 个字节循环一次是必要的,因为我正在实现与云提供商 Mega 相同的 CBC-MAC 功能。
编码
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 变体有何不同?
谢谢!