使用openssl命令进行加密解密及散列运算的命令行

/*********************************************************************
 * Author  : Samson
 * Date    : 01/05/2014
 * Test platform:
 *               3.6.10-4.fc18.i686.PAE
 *               GNU bash, version 4.2.39

 * *******************************************************************/

加密的结果为ascii码的加密与解密:
openssl enc -aes-128-cbc -e -a -in yygy/in.txt -out dj.txt -K c286696d887c9aa0611bbb3e2025a45a -iv 562e17996d093d28ddb3ba695a2e6f58
openssl enc -aes-128-cbc -d -a -in dj.txt -out dedj.txt -K c286696d887c9aa0611bbb3e2025a45a -iv 562e17996d093d28ddb3ba695a2e6f58

加密的结果为二进制文件的加密与解密:
openssl enc -aes-128-cbc -e  -in yygy/in.txt -out dj.txt -K c286696d887c9aa0611bbb3e2025a45a -iv 562e17996d093d28ddb3ba695a2e6f58
openssl enc -aes-128-cbc -d  -in dj.txt -out dedj.txt -K c286696d887c9aa0611bbb3e2025a45a -iv 562e17996d093d28ddb3ba695a2e6f58


md5:
openssl dgst -md5 dj.txt 


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
椭圆加密解密算法(Elliptic Curve Cryptography, ECC)是基于椭圆曲线数学理论的一种加密算法,它具有密钥短、计算量小、安全性高等优点,被广泛应用于安全通信领域。 在C语言中实现ECC算法,需要先了解椭圆曲线的基本概念和运算规则。具体实现过程如下: 1. 定义椭圆曲线参数 椭圆曲线可以用一个方程表示:y^2 = x^3 + ax + b,其中a和b是曲线的参数。在ECC算法中,这些参数需要事先定义好。 2. 定义椭圆曲线上的点 椭圆曲线上的点可以用(x, y)表示,其中x和y都是有限域Fp上的元素。在ECC算法中,我们需要定义一个结构体来表示这些点: ``` typedef struct { int x; int y; } Point; ``` 3. 定义ECC算法中的运算规则 在椭圆曲线上,有加法、减法和乘法等运算规则。这些运算规则需要在C语言中进行实现。下面是一个简单的加法运算的实现: ``` // 椭圆曲线上两点相加 Point ecc_add(Point p1, Point p2, int a, int p) { Point res; int s; if (p1.x == p2.x && p1.y == p2.y) // 两点相同 { s = ((3 * p1.x * p1.x + a) * mod_inv(2 * p1.y, p)) % p; // 斜率 } else // 两点不同 { s = ((p2.y - p1.y) * mod_inv(p2.x - p1.x, p)) % p; // 斜率 } res.x = (s * s - p1.x - p2.x) % p; // x坐标 res.y = (s * (p1.x - res.x) - p1.y) % p; // y坐标 return res; } ``` 4. 实现ECC算法中的加密和解密 ECC算法中的加密和解密过程,需要用到公钥和私钥。公钥可以由椭圆曲线上的一个点生成,私钥是一个随机数。在加密过程中,需要先将明文转换成椭圆曲线上的一个点,然后将该点和公钥相乘得到密文。在解密过程中,需要用私钥乘以密文中的点,得到明文点,再将其转换成明文。 下面是一个简单的加密和解密的实现: ``` // 椭圆曲线加密 Point ecc_encrypt(Point p, Point pub_key, int a, int p) { int k = rand() % p; // 随机数 Point res; res = ecc_mul(pub_key, k, a, p); // 公钥相乘 res = ecc_add(res, p, a, p); // 明文加上公钥 return res; } // 椭圆曲线解密 Point ecc_decrypt(Point p, int priv_key, int a, int p) { Point res; res = ecc_mul(p, priv_key, a, p); // 私钥乘以密文中的点 res = ecc_add(res, inverse(p), a, p); // 密文减去公钥 return res; } ``` 需要注意的是,上述的代码只是一个简单的实现示例,实际使用中需要考虑更多的安全问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值