`
wx1569110409
  • 浏览: 20578 次
文章分类
社区版块
存档分类
最新评论

关于RSA的一些学习心得

 
阅读更多
  1.   RSA加密分主要为公钥加密和私钥加密验签
  2. 使用SUN提供的security封装的方法
  3. 基础原理: RSA就是建立在对大数分解质因式的困难上的,理论依据是费马定理和欧拉定理
  4. 下为私钥加密--签名验证流程:
    1.   /**
  5.      * 数据签名
  6.      *
  7.      * @param content
  8.      *            签名内容
  9.      * @param privateKey
  10.      *            私钥
  11.      * @return 返回签名数据
  12.      */
  13.     public static String sign(String content, String privateKey) {
  14.         try {
  15.             PKCS8EncodedKeySpec priPKCS8 = new PKCS8EncodedKeySpec(
  16.                     Base64.decode(privateKey));
  17.             KeyFactory keyf = KeyFactory.getInstance("RSA");
  18.             PrivateKey priKey = keyf.generatePrivate(priPKCS8);
  19.  
  20.             java.security.Signature signature = java.security.Signature
  21.                     .getInstance("SHA1WithRSA");//地址算法
  22.  
  23.             signature.initSign(priKey);
  24.             signature.update(content.getBytes("UTF-8"));
  25.  
  26.             byte[] signed = signature.sign();
  27.  
  28.             return Base64.encode(signed);
  29.         } catch (Exception e) {
  30.             e.printStackTrace();
  31.         }
  32.  
  33.         return null;
  34.     }
  35.  
  36.     /**
  37.      * 签名验证
  38.      *
  39.      * @param content 签名内容
  40.      * @param sign 签名
  41.      * @param lakala_public_key
  42.      * @return
  43.      */
  44.     public static boolean verify(String content, String sign,
  45.             String public_key) {
  46.         try {
  47.             KeyFactory keyFactory = KeyFactory.getInstance("RSA");
  48.             byte[] encodedKey = Base64.decode(public_key);
  49.             PublicKey pubKey = keyFactory
  50.                     .generatePublic(new X509EncodedKeySpec(encodedKey));
  51.  
  52.             java.security.Signature signature = java.security.Signature
  53.                     .getInstance("SHA1WithRSA");
  54.  
  55.             signature.initVerify(pubKey);
  56.             signature.update(content.getBytes("UTF-8"));
  57.  
  58.             boolean bverify = signature.verify(Base64.decode(sign));
  59.             return bverify;
  60.  
  61.         } catch (Exception e) {
  62.             e.printStackTrace();
  63.         }
  64.  
  65.         return false;
  66.     }
  67. 其中RSA核心的类 Cipher
  68. getInstance可选择加密模式:填充模式、非填充模式、正常模式,笔者目前遇到的加密模式有这三种。
  69. provider为提供加密算法是谁比如  RSA/ECB/NoPadding 表示RSA提供加密算法,ECB代表其属于工作模式,NoPadding即为非填充模式。
  70. 笔者在做对客户端发送密文,服务器接收秘闻进行加密的时候,遇到过解析乱码的问题
  71. 那是因为客户端比如Andriod端进行加密使用的基础框架默认使用填充模式,传来的都是长度为128的密文,当加解密模式不一致时出现乱码也是对的,java填充是从前开始填充,androd是在尾部开始填充,解决方法有两种,第一统一标准,第二中提供一个新的provider

转载于:https://my.oschina.net/Denniswang/blog/678591

分享到:
评论

相关推荐

    基于RSA的加密算法的实验报告

    ### 基于RSA的加密算法的实验报告 ...综上所述,通过本实验报告的学习和实践,我们可以深入了解RSA算法的工作原理及其在实际应用中的实现细节。这对于理解现代密码学的基本概念和技术具有重要意义。

    RSA实验报告

    ### RSA实验报告知识点详解 #### 实验目的 本次实验旨在帮助学生深入理解RSA算法的基本原理及其特点,并...通过实践操作,学生能够更好地掌握加密算法的实际应用,并为进一步学习更高级别的安全技术打下坚实的基础。

    基于MATLAB的RSA仿真程序

    RSA算法是一种广泛应用于网络安全的非对称加密技术,由Ron Rivest、Adi Shamir和Leonard ...通过上述分析,我们可以看出这个MATLAB程序虽然不能处理1024位的RSA密钥,但它提供了一个学习和理解RSA加密机制的基础平台。

    MD5和RSA及DES的学习实践

    RSA是一种非对称加密算法,由Ron Rivest、Adi Shamir和Leonard Adleman在1977年提出。它的核心思想是公钥和私钥的分离:任何人都可以获取公钥进行加密,但只有拥有对应私钥的人才能解密。这使得RSA在安全通信、数字...

    计算机科学与技术学习心得

    概率论和统计学在数据分析、机器学习和人工智能中不可或缺。贝叶斯统计为数据驱动的决策提供了理论框架,而随机过程则在模拟和预测系统行为时发挥着作用。 数学在计算机科学的许多其他领域也发挥着重要作用。例如,...

    2021网络信息安全学习心得体会.docx

    ### 网络信息安全学习心得体会 #### 一、引言 随着信息技术的飞速发展,网络信息安全已成为现代社会不可或缺的一部分。在网络信息安全的学习过程中,不仅能够深刻理解到信息安全的重要性,还能够掌握保护个人信息...

    计算1.rar学习交流心得分享进步

    12102790.zip文件很可能是该书的电子版,包含了一些关键章节或资料,为学习者提供了便捷的学习资源。 在计算数论中,有几个关键的知识点值得我们深入研究: 1. **素数分布**:计算数论的一个重要问题是理解素数的...

    设计一个使用RSA算法进行加密解密的系统网络安全基础课程设计word格式.doc

    同时,学生也可以学习到如何设计和实现一个使用RSA算法进行加密解密的系统,包括操作界面设计和算法实现代码的编写。 参考文献: 1. RSA官方网站:https://www.rsa.com/ 2. 《数据加密解密》作者:John Smith 出版...

    openssl学习资料大全

    描述中提到,学习资料包括“中文手册,编程实例,学习心得等等”,这暗示了资源包的内容非常全面。中文手册对于中文使用者来说是极大的便利,能够帮助理解和掌握OpenSSL的相关概念和技术;编程实例则提供了实际操作...

    密码学学习心得.docx

    密码学是一门涉及信息安全、数据保护以及网络安全的学科,它主要关注如何通过加密、解密...同时,对于密码学的学习和理解,不仅有助于我们理解信息世界的运作,还能为我们应对未来的网络安全威胁提供必要的知识和工具。

    SFTP学习心得

    在本文中,我们将深入探讨SFTP(Secure File Transfer Protocol)的学习心得,特别是在Windows环境下通过Java进行实现的方法。SFTP是一种安全的文件传输协议,它基于SSH(Secure Shell)协议,确保数据传输的安全性...

    密码学学习心得.doc

    现代密码算法如RSA、AES等,以及公钥密码体制的出现,为信息加密提供了更强的安全保障。此外,现代密码学还涉及到零知识证明、量子密码学等前沿领域。 【密码技术的应用】 密码技术广泛应用于网络安全、电子商务、...

    密码学实验报告

    5. **RSA**:RSA是一种非对称加密算法,基于大数因子分解的困难性。它包含一对密钥,公钥用于加密,私钥用于解密,广泛应用于数字证书和网络通信中的身份验证。 6. **DSA(Digital Signature Algorithm)**:DSA是...

    记录一些我自己在学习Android逆向过程中的有意思的东西.zip

    首先,说明.txt文件可能包含了作者在学习过程中的一些心得、技巧或者案例概述。在逆向工程中,理解代码逻辑、跟踪函数调用、识别加密算法等都是关键技能。作者可能会分享如何使用工具如dex2jar、JD-GUI来将Dalvik...

    2021网络安全心得体会.docx

    网络的安全性是当今数字化时代的重要议题,随着互联网的普及,网络安全不仅关乎个人隐私,也影响着企业、政府乃至整个社会的稳定运行。...因此,了解和学习网络安全知识,对于每一个网络用户来说都至关重要。

    linux学习资料

    - **参与社区交流**:加入Linux相关的论坛或社交媒体群组,与其他学习者一起交流心得,遇到问题时也可以寻求帮助。 - **持续更新知识**:由于技术的不断进步,Linux也在不断发展和完善中。因此,保持好奇心和求知欲...

    安全云存储系统技术总结

    通过使用各种加密算法,如AES、RSA等,可以将数据转化为密文,在传输和存储过程中即使被非法获取也难以解读。加密技术分为对称加密和非对称加密。对称加密效率高,但需要安全地传递密钥;非对称加密虽处理速度慢,但...

    密码引论心得1

    密码学是一门深奥且至关重要的学科,它源于古希腊语中的“隐藏的书写”,旨在保护信息的安全,防止未授权的访问和泄露。...通过深入学习和理解密码学,我们可以更好地应对信息时代带来的挑战,构建更安全的数字世界。

    非对称加密&&RAS算法学习经验

    3. **计算解密指数d**:求e关于φ(N)的模逆元d,即d满足e*d%φ(N)=1。这个过程可以通过扩展欧几里得算法完成。 4. **密钥对**:公钥由{e, N}组成,私钥由{d, N}组成。公钥可以公开,而私钥必须由密钥持有者妥善保管...

    高职组“信息安全管理与评估”第一阶段2022年个人自己练习笔记

    例如,了解基本的加密算法(如AES和RSA)及其在数据保护中的应用,理解防火墙和入侵检测系统的工作原理,以及学习如何进行安全审计和漏洞扫描。 评估环节通常要求参赛者能够进行实际操作,比如配置安全设备、排查...

Global site tag (gtag.js) - Google Analytics