# zcrypto **Repository Path**: calvinwilliams/zcrypto ## Basic Information - **Project Name**: zcrypto - **Description**: zcrypto是一个用zlang语言编写的加解密算法工具,支持摘要算法(MD2、MD4、MD4、SHA1、SHA224、SHA256、SHA384、SHA512)、对称加解密算法(DES、3DES-ECB/CBC)、非对称加解密算法(RSA)、签名验签算法(RSA),...,用于生成密钥文件、安全计算等场景。 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-06-23 - **Last Updated**: 2025-09-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ### 关于`zcrypto` [`zcrypto`](https://gitee.com/calvinwilliams/zcrypto)是一个`zlang`语言开发的开源项目,它采用中文编程的方式,实现了一个加解密工具软件,支持 * 摘要算法`MD2`、`MD4`、`MD5`、`SHA1`、`SHA224`、`SHA256`、`SHA384`、`SHA512` * 对称加解密算法`DES`、`3DES`的`ECB`、`CBC`模式 * 非对称加解密算法和签名验签算法`RSA` * 将来会很容易的支持国密算法`SM2`、`SM3`、`SM4` * 支持输入数据从裸字符串、十六进制展开字符串、BASE64字符串、从文本文件中读取,支持输出数据显示裸字符串、十六进制展开字符串、BASE64字符串、写到文本文件 ### 开发者可以通过这个开源项目 1. 感受用`zlang`编写关键字、变量名、函数名都使用中文的程序代码; 2. 学习如何用`zlang`开发命令行工具软件; ### 项目目录说明 ​ `zlang`源码文件都放在`src/`目录里; ​ 快捷脚本文件在`shbin/`目录里; ### 运行说明 ​ 不参数的运行工具软件则显示所有支持的算法 ``` $ cd shbin/ $ zcrypto.sh USAGE : zcrypto.sh -v -a:(MD2|MD4|MD5|SHA1|SHA224|SHA256|SHA384|SHA512) -i:(TEXT|HEXSTR|BASE64|FILE) (INPUT_DATA) --salt:(TEXT|HEXSTR|BASE64|FILE) (SALT_DATA) -o:(TEXT|BINARY|HEXSTR|BASE64) -a:(DES|TRIPLEDES).(ENCRYPT|DECRYPT) -m:(ECB|CBC) -k:(TEXT|HEXSTR|BASE64|FILE) (KEY_DATA) -i:(TEXT|HEXSTR|BASE64|FILE) (INPUT_DATA) --padding:(ZERO|PKCS7) -o:(TEXT|BINARY|HEXSTR|BASE64) -a:RSA.GENERATE_KEY --key-len-bytes (512|1024|2048|4096) --e (3|F4) --export-privkey-pem privkey_pem_filename --export-pubkey-pem pubkey_pem_filename --export-privkey-der privkey_der_filename --export-pubkey-der pubkey_der_filename -a:RSA.ENCRYPT --pubkey-pem pubkey_pem_filename|--pubkey-der pubkey_der_filename -i:(TEXT|HEXSTR|BASE64|FILE) (INPUT_DATA) --padding:(NO|PKCS7|PKCS7_OAEP) -o:(TEXT|BINARY|HEXSTR|BASE64) -a:RSA.DECRYPT --privkey-pem privkey_pem_filename|--privkey-der privkey_der_filename -i:(TEXT|HEXSTR|BASE64|FILE) (INPUT_DATA) --padding:(NO|PKCS7|PKCS7_OAEP) -o:(TEXT|BINARY|HEXSTR|BASE64) -a:RSA.SIGN --digest:(MD5|SHA1|SHA224|SHA256|SHA384|SHA512) -i:(TEXT|HEXSTR|BASE64|FILE) (INPUT_DATA) --privkey-pem privkey_pem_filename|--privkey-der privkey_der_filename -o:(TEXT|BINARY|HEXSTR|BASE64) -a:RSA.VERIFY --digest:(MD5|SHA1|SHA224|SHA256|SHA384|SHA512) -i:(TEXT|HEXSTR|BASE64|FILE) (INPUT_DATA) --sign:(TEXT|HEXSTR|BASE64|FILE) (SIGN_DATA) --pubkey-pem pubkey_pem_filename|--pubkey-der pubkey_der_filename ``` ​ 计算MD5摘要 ``` $ zcrypto.sh -a:MD5 -i:TEXT abc -o:HEXSTR 900150983CD24FB0D6963F7D28E17F72 ``` ​ 计算`cbc`模式的`3des`加密,填充模式为`pkcs7` ``` $ zcrypto.sh -a:TRIPLEDES.ENCRYPT -m:CBC -k:TEXT 123456781234567812345678 -i:TEXT abc --padding:PKCS7 -o:HEXSTR C24B98FAD5C0580E ``` 生成一对RSA密钥,并导出公钥和私钥为PEM格式文件和DER格式文件 ``` $ zcrypto.sh -a:RSA.GENERATE_KEY --key-len-bytes 4096 --export-prikey-pem /tmp/zcrypto.prikey.pem --export-pubkey-pem /tmp/zcrypto.pubkey.pem --export-prikey-der /tmp/zcrypto.prikey.der --export-pubkey-der /tmp/zcrypto.pubkey.der ``` 利用刚才生成的私钥文件对字符串做签名 ``` $ zcrypto.sh -a:RSA.SIGN --digest:SHA1 -i:TEXT abc --prikey-pem /tmp/zcrypto.prikey.pem -o:BINARY > /tmp/zcrypto.rsa.sign ``` 再用公钥文件对字符串和签名做验签 ``` $ zcrypto.sh -a:RSA.VERIFY --digest:SHA1 -i:TEXT abc --sign:FILE /tmp/zcrypto.rsa.sign --pubkey-pem /tmp/zcrypto.pubkey.pem 验签成功 ``` ###