实现凯撒密码的加密

上传人:ji****72 文档编号:37671817 上传时间:2018-04-20 格式:DOC 页数:17 大小:125KB
返回 下载 相关 举报
实现凯撒密码的加密_第1页
第1页 / 共17页
实现凯撒密码的加密_第2页
第2页 / 共17页
实现凯撒密码的加密_第3页
第3页 / 共17页
实现凯撒密码的加密_第4页
第4页 / 共17页
实现凯撒密码的加密_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《实现凯撒密码的加密》由会员分享,可在线阅读,更多相关《实现凯撒密码的加密(17页珍藏版)》请在金锄头文库上搜索。

1、实现凯撒密码的加密、解密过程。 输入明文。密钥#include #include int main() char s100,c;int i,p,d,e;printf(“请选择 : A.加密 B.解密 Q.退出n“);scanf(“%c“,if(c=a|c=A)printf(“输入明文:“);scanf(“%s“,p=strlen(s);printf(“请设置偏移量:“);scanf(“%d“,for(i=0;i=a int iLen = arrB.length;/ 两个字符表示一个字节,所以字节数组长度是字符串长度除以 2byte arrOut = new byteiLen / 2;for (

2、int i = 0; i 22 * RSA 同时有两把钥匙,公钥与私钥。同时支持数字签名。23 * 数字签名的意义在于,对传输过来的数据进行校验。确保数据在传输过程中不被修改。24 * 25 * 流程分析:26 * 甲方构建密钥对儿,将公钥公布给乙方,将私钥保留。27 * 甲方使用私钥加密数据,然后用私钥对加密后的数据签名,发送给乙方签名以及加密后的数据;乙方使用公钥、签名来验证待解密数据是否有效,如果有效使用公钥对数据解密。28 * 乙方使用公钥加密数据,向甲方发送经过加密后的数据;甲方获得加密数据,通过私钥解密。 29 * 30 * 31 * author Ice_Liu32 * 33 *

3、/34 public class RSACryptUtil 35 public static final String KEY_ALGORITHM = “RSA“;36 public static final String SIGNATURE_ALGORITHM = “MD5withRSA“;37 private static final String PUBLIC_KEY = “RSAPublicKey“;38 private static final String PRIVATE_KEY = “RSAPrivateKey“;39 40 /*41 * 用私钥对信息生成数字签名42 * 43

4、* param data44 * 加密数据45 * param privateKey46 * 私钥47 * 48 * return49 * throws Exception50 */51 public static String sign(byte data, String privateKey) throws Exception 52 / 解密由 base64 编码的私钥53 byte keyBytes = CryptUtil.decryptBASE64(privateKey);54 / 构造 PKCS8EncodedKeySpec 对象55 PKCS8EncodedKeySpec pkcs

5、8KeySpec = new PKCS8EncodedKeySpec(keyBytes);56 / KEY_ALGORITHM 指定的加密算法57 KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORITHM);58 / 取私钥匙对象59 PrivateKey priKey = keyFactory.generatePrivate(pkcs8KeySpec);60 / 用私钥对信息生成数字签名61 Signature signature = Signature.getInstance(SIGNATURE_ALGORITHM);62 s

6、ignature.initSign(priKey);63 signature.update(data);64 return CryptUtil.encryptBASE64(signature.sign();65 66 67 /*68 * 校验数字签名69 * 70 * param data71 * 加密数据72 * param publicKey73 * 公钥74 * param sign75 * 数字签名76 * 77 * return 校验成功返回 true 失败返回 false78 * throws Exception79 * 80 */81 public static boolean

7、verify(byte data, String publicKey, String sign) throws Exception 82 / 解密由 base64 编码的公钥83 byte keyBytes = CryptUtil.decryptBASE64(publicKey);84 / 构造 X509EncodedKeySpec 对象85 X509EncodedKeySpec keySpec = new X509EncodedKeySpec(keyBytes);86 / KEY_ALGORITHM 指定的加密算法87 KeyFactory keyFactory = KeyFactory.g

8、etInstance(KEY_ALGORITHM);88 / 取公钥匙对象89 PublicKey pubKey = keyFactory.generatePublic(keySpec);90 Signature signature = Signature.getInstance(SIGNATURE_ALGORITHM);91 signature.initVerify(pubKey);92 signature.update(data);93 / 验证签名是否正常94 return signature.verify(CryptUtil.decryptBASE64(sign);95 96 97 /

9、*98 * 解密99 * 用私钥解密100 * 101 * param data102 * param key103 * return104 * throws Exception105 */106 public static byte decryptByPrivateKey(byte data, String key) throws Exception 107 / 对密钥解密108 byte keyBytes = CryptUtil.decryptBASE64(key);109 / 取得私钥110 PKCS8EncodedKeySpec pkcs8KeySpec = new PKCS8Enco

10、dedKeySpec(keyBytes);111 KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORITHM);112 Key privateKey = keyFactory.generatePrivate(pkcs8KeySpec);113 / 对数据解密114 Cipher cipher = Cipher.getInstance(keyFactory.getAlgorithm();115 cipher.init(Cipher.DECRYPT_MODE, privateKey);116 return cipher.doFinal(

11、data);117 118 119 /*120 * 解密121 * 用私钥解密122 * 123 * param data124 * param key125 * return126 * throws Exception127 */128 public static byte decryptByPublicKey(byte data, String key) throws Exception 129 / 对密钥解密130 byte keyBytes = CryptUtil.decryptBASE64(key);131 / 取得公钥132 X509EncodedKeySpec x509KeySp

12、ec = new X509EncodedKeySpec(keyBytes);133 KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORITHM);134 Key publicKey = keyFactory.generatePublic(x509KeySpec);135 / 对数据解密136 Cipher cipher = Cipher.getInstance(keyFactory.getAlgorithm();137 cipher.init(Cipher.DECRYPT_MODE, publicKey);138 return ci

13、pher.doFinal(data);139 140 141 /*142 * 加密143 * 用公钥加密144 * 145 * param data146 * param key147 * return148 * throws Exception149 */150 public static byte encryptByPublicKey(byte data, String key) throws Exception 151 / 对公钥解密152 byte keyBytes = CryptUtil.decryptBASE64(key);153 / 取得公钥154 X509EncodedKeySpec x509KeySpec = new X509EncodedKeySpec(keyBytes);155 KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORITHM);156 Key publicKey = keyFactory.generatePublic(x509KeySpec);157 / 对数据加密158 Cipher cipher = Ciph

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号