Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 使用键值计算键检查值_C_Encryption_Cryptography_Openssl_Key Management - Fatal编程技术网

C 使用键值计算键检查值

C 使用键值计算键检查值,c,encryption,cryptography,openssl,key-management,C,Encryption,Cryptography,Openssl,Key Management,Iam用C语言编程。我已获得组件中的TMK终端主密钥,例如TMK1=32字节十六进制值TMK2=32字节十六进制值。 我需要使用这两个键值计算键检查值。 我知道DES算法是用来实现这一点,但我不知道完整的程序。 请提供一个示例程序来执行此操作 我试着这样做: 1.取KV:XXXX XXXX XXXX YYYYYYYYYYYYYY 2.将其分为左、右两部分,每部分长度为64位: 左=XXXX XXXX XXXX XXXX 右=YYYYYYYYYYYY 3.用零初始化64位缓冲区。调用此缓冲区结果

Iam用C语言编程。我已获得组件中的TMK终端主密钥,例如TMK1=32字节十六进制值TMK2=32字节十六进制值。 我需要使用这两个键值计算键检查值。 我知道DES算法是用来实现这一点,但我不知道完整的程序。 请提供一个示例程序来执行此操作

我试着这样做:

1.取KV:XXXX XXXX XXXX YYYYYYYYYYYYYY

2.将其分为左、右两部分,每部分长度为64位: 左=XXXX XXXX XXXX XXXX 右=YYYYYYYYYYYY

3.用零初始化64位缓冲区。调用此缓冲区结果

4.DES用左键加密结果

5.DES使用权限对结果进行解密

6.DES用左键加密结果


平台:Linux,C语言

我现在不能给你一个代码,但我建议你把KV当作一个字符串或数组或字符,这样你就可以很容易地把它分成两部分。类似的东西。

KV是以十六进制值的形式给出的……我是否必须将其转换为ASCII然后使用,还是应该按原样使用。@john:不要将其转换为ASCII。它是二进制数据,所以直接使用它。让我想起一些旧的ANSI银行标准,X9.9或类似的东西。你说你不知道使用的算法,但你告诉我们的更少。我们怎么可能给出有用的答案?我主要关心的是如何划分TMK内容,并将其用于上面提到的连续3DES算法。@john您有一个16字节的三重DES密钥。那有什么问题?您提到的步骤是正确的。假设您使用3DES,那么就很容易做到: