欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    RSA和DES加密解密实验.docx

    • 资源ID:6345631       资源大小:285.20KB        全文页数:20页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    RSA和DES加密解密实验.docx

    1、RSA和DES加密解密实验实验一 加密解密实验一、实验目的:通过JAVA语言,来实现对称密钥加密算法,非对称秘钥加密算法对信息的加密解密,通过实际操作加深学生对对称密钥加密、非对称秘钥加密解密的理解。二、实验内容:安装JDK,配置Java开发环境,加压eclipse,编写对称秘钥的生成、对称密钥加密、解密的程序。编写非对称秘钥加密解密的程序,用私钥对信息进行加密,用公钥对信息进行解密,然后用公钥对信息进行加密,用私钥对信息进行解密。三、实验用到的主要技术及工具主要技术:Java、Bouncy Castle主要工具:Eclipse四、开发步骤:1、安装JDK,配置JAVA环境变量。2、解压ecl

    2、ipse。3、在eclipse中新建项目4、编写使用DES算法生成秘钥的程序。 1.初始化密钥,并对密钥进行Base64位编码5、使用生成的秘钥对“电子商务安全技术”进行加密。加密,使用生成的密钥和明文作为参数进行传递,并使用密钥对明文加密以下是对明文进行初始化,在第4点中已对密钥初始化已下是加密算法6、用第4步骤中生成的秘钥对第5部中生成的加密后的内容进行解密。inputData为第五步中出现的加密过后的明文,由于DES 为对称加密,所以解密密钥key和加密密钥key使用的是同一把密钥以下是解密算法: 以下是DES加密与解密算法的结果7、使用AES算法重复4-6步骤。8、使用RSA算法生成公

    3、钥和私钥。对密钥进行初始化取得公钥取得私钥对密钥进行编码并输出到控制台获取明文,并对明文进行编码9、用公钥对“电子商务安全技术RSA”进行加密。以下是加密算法 10、用私钥对第九步中加密的信息进行解密。私钥解密:以下是解密算法11、用生成的私钥对“电子商务安全技术RSA”进行加密。12、用公钥对11步中的信息进行解密。私钥加密算法公钥解密算法:以下是其中一次进行加密与解密的情况13、请把你的公钥发送给你旁边的同学,让该同学用公钥进行加密,然后再把加密后的信息发送给你,你再用你的私钥对信息进行解密。使用其中的一对公钥和私钥,并对公钥加密的数据进行私钥解密,对私钥加密的数据进行公钥解密以下是固定公

    4、钥和私钥,公钥加密的密文,私钥加密的密钥以公钥解密为例对私钥加密的密文进行解码,同时也对传输过来的公钥进行同样的解码byte encodedData1 = Base64.decodeBase64(PriMi);publicKey = Base64.decodeBase64(pubKey);使用解码的密文和公钥对数据进行解密byte pri_pub_Data = Demo.decryptByPublicKey(encodedData1, publicKey);以下附上完整代码:DESDemo.javapackage cn.xupt.YVCB.code;import java.security.K

    5、ey;import java.security.Security;import javax.crypto.Cipher;import javax.crypto.KeyGenerator;import javax.crypto.SecretKey;import javax.crypto.SecretKeyFactory;import javax.crypto.spec.DESKeySpec;import mons.codec.binary.Base64;import org.bouncycastle.jce.provider.BouncyCastleProvider;public class D

    6、ESDemo /加密算法 public static final String KEY_ALGORITHM = DES; public static final String CIPHER_ALGORITHM = DES/ECB/PKCS5Padding; /* * 对密钥进行初始化,并返回字节码 * return * throws Exception */ public static byte initKey() throws Exception KeyGenerator kg = KeyGenerator.getInstance(KEY_ALGORITHM); kg.init(64); /

    7、初始化的密钥的长度 SecretKey secretKey = kg.generateKey(); return secretKey.getEncoded(); public static Key toKey(byte key) throws Exception /实例化DES密钥材料 DESKeySpec dks = new DESKeySpec(key); /实例化秘密密钥莞式服务 SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(KEY_ALGORITHM); /生成秘密密钥 SecretKey secretKey =

    8、keyFactory.generateSecret(dks); return secretKey; /* * 解密 * param data * param key * return * throws Exception */ public static byte decrypt(byte data, byte key) throws Exception Key k = toKey(key); /还原密钥 Cipher cipher = Cipher.getInstance(CIPHER_ALGORITHM); cipher.init(Cipher.DECRYPT_MODE,k); retur

    9、n cipher.doFinal(data); /* * 加密 * param data 需要加密的数据 * param key 加密密钥 * return * throws Exception */ public static byte encrypt(byte data, byte key) throws Exception Key k = toKey(key); /还原密钥 Cipher cipher = Cipher.getInstance(CIPHER_ALGORITHM); /实例化 cipher.init(Cipher.ENCRYPT_MODE, k); /初始化,设置为解密模式

    10、 return cipher.doFinal(data); /执行操作 public static void test(String str) throws Exception Security.addProvider(new BouncyCastleProvider(); String inputStr = str + 使用DES加密与解密; /获取字符串 byte inputData = inputStr.getBytes(); /将字符转换成二风景进制 System.err.println(n=使用DES加密与解密=); System.err.println(原文:+inputStr);

    11、 /打印转换后的字节码 /初始化密钥 byte key = DESDemo.initKey(); System.err.println(密钥编码前:+key); System.err.println(密钥: +Base64.encodeBase64String(key); /加密 inputData = DESDemo.encrypt(inputData,key); System.err.println(加密后: + Base64.encodeBase64String(inputData); /解密 byte outputData = DESDemo.decrypt(inputData, ke

    12、y); String outputStr = new String(outputData); System.err.println(解密后: + outputStr); System.err.println(=DES加密与解密完成=); RSADemo.javapackage cn.xupt.YVCB.code;import java.security.*;import java.security.interfaces.*;import java.security.spec.*;import java.util.*;import javax.crypto.Cipher;import mons.

    13、codec.binary.Base64;public class RSADemo private static byte publicKey; private static byte privateKey; / 非对称加密算法 :RSA public static final String KEY_ALGORITHM = RSA; / 公钥 private static final String PUBLIC_KEY = RSAPublicKey; / 私钥 private static final String PRIVATE_KEY = RSAPrivateKey; / 密钥长度 priv

    14、ate static final int KEY_SIZE = 512; /* * 初始化密钥 * * return keyMap 密钥Map * throws Exception */ public static Map initKey() throws Exception KeyPairGenerator keyPairgen = KeyPairGenerator .getInstance(KEY_ALGORITHM); / 实例化密钥对生成器 keyPairgen.initialize(KEY_SIZE); / 初始化密钥对生成器 KeyPair keyPair = keyPairgen

    15、.generateKeyPair(); / 生成密钥对 RSAPublicKey publicKey = (RSAPublicKey) keyPair.getPublic(); / 生成公钥 RSAPrivateKey privateKey = (RSAPrivateKey) keyPair.getPrivate(); / 生成私钥 Map keyMap = new HashMap(2); / 封闭密钥 keyMap.put(PUBLIC_KEY, publicKey); keyMap.put(PRIVATE_KEY, privateKey); return keyMap; /* * 获取私钥

    16、 * * param keyMap * 密钥Map * return 返回私钥二进制 * throws Exception */ public static byte getPrivateKey(Map keyMap) throws Exception Key key = (Key) keyMap.get(PRIVATE_KEY); return key.getEncoded(); /* * 取得公钥 * * param keyMap * 公钥Map * return * throws Exception */ public static byte getPublicKey(Map keyMa

    17、p) throws Exception Key key = (Key) keyMap.get(PUBLIC_KEY); return key.getEncoded(); /* * 使用私钥进行加密 * * param data * param key * return * throws Exception */ public static byte decryptByPrivateKey(byte data, byte key) throws Exception / 取得私钥 PKCS8EncodedKeySpec pkcs8KeySpec = new PKCS8EncodedKeySpec(

    18、key); KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORITHM); / 生成私钥 PrivateKey privateKey = keyFactory.generatePrivate(pkcs8KeySpec); / 对数据进行加密 Cipher cipher = Cipher.getInstance(keyFactory.getAlgorithm(); cipher.init(Cipher.DECRYPT_MODE, privateKey); return cipher.doFinal(data); /* * 公钥解密 *

    19、 * param data * param key * return * throws Exception */ public static byte decryptByPublicKey(byte data, byte key) throws Exception / 获取公钥 X509EncodedKeySpec x509KeySpec = new X509EncodedKeySpec(key); KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORITHM); / 生成公钥 PublicKey publicKey = keyFac

    20、tory.generatePublic(x509KeySpec); / 对数据进行加密 Cipher cipher = Cipher.getInstance(keyFactory.getAlgorithm(); cipher.init(Cipher.DECRYPT_MODE, publicKey); return cipher.doFinal(data); /* * 公钥加密 * * param data * param key * return * throws Exception */ public static byte encryptByPublicKey(byte data, byt

    21、e key) throws Exception / 取得公钥 X509EncodedKeySpec x509KeySpec = new X509EncodedKeySpec(key); KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORITHM); PublicKey publicKey = keyFactory.generatePublic(x509KeySpec); / 对数据加密 Cipher cipher = Cipher.getInstance(keyFactory.getAlgorithm(); cipher.init(

    22、Cipher.ENCRYPT_MODE, publicKey); return cipher.doFinal(data); /* * 私钥加密 * * param data * param key * return * throws Exception */ public static byte encryptByPrivateKey(byte data, byte key) throws Exception / 取得私钥 PKCS8EncodedKeySpec pkcs8KeySpec = new PKCS8EncodedKeySpec(key); KeyFactory keyFactory

    23、 = KeyFactory.getInstance(KEY_ALGORITHM); PrivateKey privateKey = keyFactory.generatePrivate(pkcs8KeySpec); / 对数据进行加密 Cipher cipher = Cipher.getInstance(keyFactory.getAlgorithm(); cipher.init(Cipher.ENCRYPT_MODE, privateKey); return cipher.doFinal(data); public static void printCode() throws Excepti

    24、on System.err.println(nnn=使用RSA生成公钥与私钥=); / 初始化密钥 Map keyMap = RSADemo.initKey(); publicKey = RSADemo.getPublicKey(keyMap); privateKey = RSADemo.getPrivateKey(keyMap); System.err.println(公钥: + Base64.encodeBase64String(publicKey); System.err.println(私钥: + Base64.encodeBase64String(privateKey); Syste

    25、m.err.println(=密钥生成完成=); public void test(String str) throws Exception System.err .println(nnn = RSA加密算法:私钥加密公钥 解密=); String inputStr1 = str + :RSA加密算法 :私钥加密私钥解密; byte data1 = inputStr1.getBytes(); System.err.println(原文: + inputStr1); / 私钥加密 byte encodedData1 = RSADemo.encryptByPrivateKey(data1, pri

    26、vateKey); System.err.println(加密后: + Base64.encodeBase64String(encodedData1); / 公钥解密 byte decodedData1 = RSADemo.decryptByPublicKey(encodedData1, publicKey); String outputStr1 = new String(decodedData1); System.err.println(解密后: + outputStr1); System.err.println(nnn=公钥加密私钥解密=); String inputStr2 = str

    27、+ :RSA加密算法:公钥加密私钥解密; byte data2 = inputStr2.getBytes(); System.err.println(原文 : + inputStr2); / 公钥加密 byte encodedData2 = RSADemo.encryptByPublicKey(data2, publicKey); System.err.println(加密后: + Base64.encodeBase64String(encodedData2); / 私钥解密 byte decodedData2 = RSADemo.decryptByPrivateKey(encodedData

    28、2, privateKey); String outputStr2 = new String(decodedData2); System.err.println(解密后: + outputStr2); /* * 对别人已经加密进行解密 * * throws Exception */ public void test() throws Exception / 公钥 String pubKey = MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAIswBjSKnOZcaqc1fnz2SQPw1K3EzMoFa8WPfRq3c/Z/G+FafjY/Cy1t0mekmpS20szhz5MVyqg2C1WjO1oda3kCAwEAAQ=; / 私钥 String priKey = MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAizAGNIqc5lxq


    注意事项

    本文(RSA和DES加密解密实验.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开