# abcrypto **Repository Path**: fishmwei/abcrypto ## Basic Information - **Project Name**: abcrypto - **Description**: 密码库对比 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-04-03 - **Last Updated**: 2025-04-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 说明 实现了多个算法库算法结果对比,验证算法的正确性。 各个库当前支持的算法如下 : | 算法 | openssl | mbedtls | nettle | | ---- | ---- | ---- | ---- | | AES | Y(指令) | Y | - | | SM4 | Y(指令) | - | Y | | SHA1 | Y(指令) | Y | - | | SHA224 | Y(指令) | Y |- | | SHA256 | Y(指令) | Y | - | | SHA384 | Y(指令) | Y | - | | SHA512 | Y(指令) | Y | - | | MD5 | Y | Y | - | | SM3 | Y(指令) | - | Y | | SHA3_224 | Y(指令) | Y |- | | SHA3_256 | Y(指令) | Y |- | | SHA3_384 | Y (指令)| Y |- | | SHA3_512 | Y (指令)| Y |- | | HMAC SHA1 | Y(指令) |Y | - | | HMAC SHA224 | Y(指令) | Y | - | | HMAC SHA256 | Y(指令) | Y | - | | HMAC SHA384 | Y(指令) | Y | - | | HMAC SHA512 | Y(指令) | Y | - | | HMAC MD5 | Y | Y | - | | HMAC SM3 | Y(指令) | -| Y | | HMAC SHA3_224 | Y(指令) | Y | - | | HMAC SHA3_256 | Y(指令) | Y | - | | HMAC SHA3_384 | Y(指令) | Y | - | | HMAC SHA3_512 | Y(指令) | Y | - | 其中, 通过修改Makefile对应库的路径可以使用不同实现的库 。 比如:openssl-3.5-noasm那么openssl不会使用汇编指令,反之则平台支持的话就会使用汇编指令。 可用于硅前环境验证。 编译后,直接运行test.sh即可。 也可以直接运行abcrypto命令, 相关参数数目如下。 ``` abcrypto # ./abcrypto -h fill openssl ok fill mbedtls ok fill nettle ok -a alg test_alg: AES_128_ECB AES_128_CBC AES_128_CTR AES_128_CFB AES_128_OFB AES_192_ECB AES_192_CBC AES_192_CTR AES_192_CFB AES_192_OFB AES_256_ECB AES_256_CBC AES_256_CTR AES_256_CFB AES_256_OFB SM4_ECB SM4_CBC SM4_CTR SM4_CFB SM4_OFB HASH_MD5 HASH_SHA1 HASH_SHA224 HASH_SHA256 HASH_SHA384 HASH_SHA512 HASH_SHA3_224 HASH_SHA3_256 HASH_SHA3_384 HASH_SHA3_512 HASH_SM3 HMAC_MD5 HMAC_SHA1 HMAC_SHA224 HMAC_SHA256 HMAC_SHA384 HMAC_SHA512 HMAC_SHA3_224 HMAC_SHA3_256 HMAC_SHA3_384 HMAC_SHA3_512 HMAC_SM3 RANDOM -A A library name, default openssl. -B B library name, default mbedtls. -s Start of data length range, default 256. -e Start of data length range, default 256. -d Length of aad before data. -l Test loop for each length, default 1. -k key length length of key, default 16. -J Skip when error occurs, count diff count. -S data step Step in [slen, elen], default 1. -h Show this help. abcrypto # ``` # 脚本命令 ```shell # 使用test.sh批量测试 # 测试aes和sm4算法 ./test.sh --cipher # 测试sha1/224/256/384/512, sha3_224/256/384/512 ./test.sh --hash # 测试sha1/224/256/384/512, sha3_224/256/384/512对应的HMAC算法 ./test.sh --hmac # 成功示例 Test alg HASH_SHA3_512 success, slen 1, elen 20000, loop 1 fill openssl ok fill mbedtls ok fill nettle ok abcrypto Version V0.0.1 Test alg HASH_SM3 success, slen 1, elen 20000, loop 1 Script end time: 2025-04-10 18:22:38.000000000 Script runnin # 错误示例 fill openssl ok fill mbedtls ok fill nettle ok abcrypto Version V0.0.1 Dismatch results[ii] len 1173 HMAC_SHA512 openssl[0x80]: "\xde\xc9\xe0\xcb\x7f\x86\x59\x6a\x81\x68\xd9\x54\xc9\x47\xe6\x3b" "\x17\x67\x4d\x04\xfd\xc9\x2b\x88\x11\xd6\x0d\x64\xe8\xa8\x09\xc5" "\xd6\xd3\x80\xef\x16\x1c\x84\x02\x3d\x98\xc9\x0a\xa8\x92\x59\x5f" "\x64\xaf\x42\x1a\xb2\x3c\x8b\xd8\x22\xba\xba\xb5\xf6\x61\xd7\x44" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" mbedtls[0x80]: "\xde\x8b\xf1\xe7\x99\x3c\xf4\x19\x34\x77\x68\x32\x64\xa3\x92\xa6" "\x04\xf9\x55\x46\x74\xd5\x36\xce\xf1\xd6\xbe\xce\x67\x21\x5a\x95" "\x47\x17\x82\xc1\xde\x28\x31\xd3\x37\x8c\x90\x1b\x2a\x1f\x97\xfa" "\x6c\x6c\x2c\x21\x84\xb8\x39\xec\xa0\x3f\xe6\x59\x43\x4d\x18\x9b" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" data[0x495]: "\x17\x28\x14\x9d\x07\x4a\x1b\xca\x2a\x1e\x19\xc4\xd6\x1d\xf9\xe6" "\xb7\x1a\x94\x9c\x0e\x5e\x79\xca\x62\x95\x18\x22\x98\x0e\xe1\x42" "\x4b\xb0\xe2\xca\x62\x37\x00\x8e\x95\x42\xe8\xcd\x0d\x67\x95\x05" "\xd0\xab\xae\xe2\x3b\xfd\x0a\x29\xaa\xf5\xcc\xc3\x10\x51\x47\x99" "\xb1\x08\x1a\xe1\x24\xa4\xcb\x4d\x23\xb1\x5c\xd4\x6e\xf6\xc0\xfd" "\x8d\x20\xd9\x0e\xba\x81\x9d\x2b\x7b\x0c\x49\x88\xc6\xec\x5d\x84" "\xfa\x06\x6e\x08\x7b\xce\xec\xb6\xca\xc0\x83\xfa\xda\xa3\x26\x4c" "\x51\xd6\x3b\x2c\x6e\xb2\x71\xd2\x42\x7d\xb0\xcc\x21\x14\x37\x34" "\xca\xc6\xf8\xbb\xbb\x9b\x00\x78\x56\x74\xfd\xc1\x86\xc3\xd3\x21" "\x37\x68\x1f\x97\xaf\xd3\xa4\xf7\x91\xdb\xf8\x63\x2f\x0c\xd2\x4d" "\x87\x19\xa2\x17\xc1\x47\xa6\x46\x74\xd2\xd5\x9c\xbc\x82\x15\x97" "\x04\xe9\xd4\x39\xaa\x45\xb5\x97\xa0\x5e\xef\x2f\x3c\x46\x40\x19" "\x1d\x83\x3b\x76\x17\x5e\x9c\xe8\x5b\x07\x46\xdc\x70\x7d\x61\x12" "\xb5\x22\x47\xbb\x27\x53\x75\xf2\xc7\xec\x12\x59\xcd\xba\xf1\xec" "\x47\xfd\xfc\x55\xa8\x60\xc8\xf1\xc6\xa6\xc3\xa0\x07\x01\xb2\x3e" "\x07\x07\x81\xfe\xe5\x6b\xb6\xae\x5e\x08\x4f\xd4\x97\xd2\x7c\xe2" key[0x10]: "\x76\x97\xd6\xb1\x25\x5e\x12\x05\x27\x65\xb6\x5e\x55\x67\x00\x17" Test alg HMAC_SHA512 failed, slen 1, elen 15000, loop 1, diff 1 ```