精华内容
下载资源
问答
  • 2021-03-01 11:28:21

    简介

    Rsa是一种非对称加密算法,含有公钥和私钥。既可以使用公钥加密然后私钥解密,也可以使用私钥加密然后公钥解密,但后者的效率比前者慢100~1000倍。

    特点:
    1. 便于理解,使用广泛。
    RSA算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作。RSA是被研究得最广泛的公钥算法,从提出到现今的三十多年里,经历了各种攻击的考验,逐渐为人们接受,普遍认为是目前最优秀的公钥方案之一。

    2. 缺点与不足:加密和解密花费时间长、速度慢,只适合对少量数据进行加密。
    为提高保密强度,RSA密钥至少为500位长,一般推荐使用1024位。这就使加密的计算量很大。为减少计算量,在传送信息时,常采用传统加密方法与公开密钥加密方法相结合的方式,即信息采用改进的DES或IDEA对话密钥加密,然后使用RSA密钥加密对话密钥和信息摘要。对方收到信息后,用不同的密钥解密并可核对信息摘要。

    应用场景
    RSA用于保密性时,就是公钥加密,私钥解密。 因为公钥是可以公开了, 那么任何人都可以使用公钥对信息进行加密,但是只有持有私钥的人才能正确解密。这样就保证了信息的保密性,因为只有私钥持有者才能正确解密。

    RSA用于认证性时,比如数字签名,即私钥持有者对信息进行签名,验证者可以根据公开的公钥进行验证签名是否正确和有效,即实现了认证性,以及不可抵赖性。

    DES/AES加密速度快,适合大量数据,处理数据后可复原。

    MD5用于完整性,确保信息在传输过程保持一致性;用于密码加密,数据库中不存储密码明文,而是存储其散列值,校验时比较散列值是否相同

    组合使用
    采用非对称加密算法管理对称算法的密钥,然后用对称加密算法加密数据,使用散列函数进行数据摘要。

    代码:

    import lombok.extern.slf4j.Slf4j;
    import org.apache.commons.codec.binary.Base64;
    
    import javax.crypto.Cipher;
    import java.security.KeyFactory;
    import java.security.interfaces.RSAPublicKey;
    import java.security.spec.X509EncodedKeySpec;
    
    @Slf4j
    public class RsaUtils {
        public final static String CHARSET_ENCODING = "UTF-8";
    
        /**
         * 编码
         *
         * @param password  密码的明文
         * @param publicKey 公钥
         * @return 返回加密后的密码(用于登陆)
         */
        public static String encrypt(String password, String publicKey) {
            try {
                byte[] decode = Base64.decodeBase64(publicKey);
                RSAPublicKey pk = (RSAPublicKey) KeyFactory.getInstance("RSA").generatePublic(new X509EncodedKeySpec(decode));
                Cipher cipher = Cipher.getInstance("RSA");
                cipher.init(Cipher.ENCRYPT_MODE, pk);
                return Base64.encodeBase64String(cipher.doFinal(password.getBytes(CHARSET_ENCODING)));
            } catch (Exception e) {
                log.error("加密失败", e);
            }
            return "";
        }
    
        public static void main(String[] args) {
            //注意:这里是公钥的内容,去除了头(-----BEGIN PUBLIC KEY-----)和尾(-----END PUBLIC KEY-----)
            String publicKey = "MIGfMXXXXXX....";
            String password = "123456";
            String encrypt = encrypt(password, publicKey);
            System.out.println(encrypt);
        }
    }
    

    说明:网上大部分RSA算法加密都是直接读文件流,然后处理的;直接通过密钥内容处理的情况比较少,所以进行记录。

    仅测试验证的话,网上有线上加解密网站供使用。

    更多相关内容
  • JAVA RSA 加密算法 RSA.java RSA公钥加解密,RSA私钥加解密,MD5withRSA 签名 MD5withRSA签名较验
  • 本文实例讲述了Python实现的rsa加密算法。分享给大家供大家参考,具体如下: 算法过程 1. 随意选择两个大的质数p和q,p不等于q,计算N=pq。 2. 根据欧拉函数,不大于N且与N互质的整数個数為(p-1)(q-1)。 3. 选择一个...
  • 主要介绍了java实现的RSA加密算法,结合实例形式详细分析了RSA加密解密的原理、java实现方法及相关注意事项,需要的朋友可以参考下
  • RSA加密算法

    2018-08-17 16:07:26
    程序包含2部分,题一和题二是求解rsa算法中d;题三是通过已知公钥,计算私钥。大家在python idle中运行需要先导入gmpy2模块。
  • 提供了rsa算法的java类及测试代码.其中已经用过,有需要的可以拿去
  • RSA加密算法C语言实现

    2018-11-11 09:38:09
    RSA算法是一种非对称密码算法,所谓非对称,就是指该算法需要一对密钥,使用其中一个加密,则需要用另一个才能解密。 RSA算法涉及三个参数,n、e1、e2。 其中,n是两个大质数p、q的积,n的二进制表示时所占用的...
  • 这样,就不能用通常的那种简单方法来模拟POST登录(比如人人网)。 通过爬虫获取新浪微博数据,模拟...1.1 由于加密方式的改变,我们这里将使用到RSA模块,有关RSA公钥加密算法的介绍可以参考网络中的有关内容。下载
  • python实现rsa加密算法

    2018-06-01 22:38:20
    这个算法非原创,真心不错,所以上传分享出来.实测过,满足需求
  • 博文---信息安全实践二之密码与隐藏技术2【数字水印&RSA加密算法实现】 RSA加密算法的实现,利用C语言改正博文中的错误程序。
  • RSA加密算法的实现

    2018-11-04 19:27:27
    算法的根据学习的密码学,按照自我个人多RSA算法的理解,通过编程实现的,有不完善的地方,请多多包含,且代码仅供参考。
  • RSA加密算法源码

    2016-02-23 09:31:15
    RSA加密算法源码 详情参见:http://blog.csdn.net/lemon_tree12138/article/details/50696926
  • 我在微信小程序里用到的。须知* 源jar文件名:bcprov-debug-jdk15on-161.jar RSA加密算法提供商BouncyCastleProvider,Bouncycstle 是一款开源的密码包,其包含了大量的密码算法,其支持椭圆曲线密码算法
  • RSA加密算法的C源代码

    2017-10-31 20:14:15
    RSA加密算法的C源代码
  • RSA加密算法实现以及C#与java互通加解密,解决RSA算法在java与C#相互通用
  • RSA加密算法(c语言)

    2015-06-03 00:29:47
    个人编的RSA加密程序,要想了解具体算法说明或者其他加密算法请关注我的博客----适合任何对算法理解不透彻的密码初学者和爱好者。
  • RSA公钥加密算法是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的。1987年首次公布,当时他们三人都在麻省理工学院工作。RSA就是他们三人姓氏...
  • js实现rsa加密算法

    2014-09-21 00:53:55
    rsa算法是使用Java与javascript加密解密范例代码,该资料从互联网收集,加上了自己的使用体会,如果对你有帮助那是万幸! js加密部分
  • MD5和RSA加密算法Java完成实现,及实现RSA需要用的jar包。参见博文 http://blog.csdn.net/yanzi1225627/article/details/26508035
  • 下面小编就为大家带来一篇RSA加密算法java简单实现方法(必看)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • C# 验证RSA加密算法

    2018-01-01 13:44:18
    用C#实现了简单的RSA加密算法,RSA是目前最有影响力和最常用的公钥加密算法,它能够抵抗到目前为止已知的绝大多数密码攻击,已被ISO推荐为公钥数据加密标准。RSA算法基于一个十分简单的数论事实:将两个大质数相乘...
  • jsencrypt.min.js文件下载。通过js给对应字段进行RSA加密解密的操作。
  • 它不仅可以进行加密,还可以用来进行数字签名和身份验证,是公钥 密码体制的代表。 RSA}JI密体制主要基于数论当中的欧拉定理进行一系列的数学变 换,以实现加解密和身份验证。在变换过程中,RSA必需经历大数的 模幂...
  • C++实现RSA加密算法

    2013-04-11 20:46:30
    本例是基于VS2012平台,对于RSA加密算法的实现
  • RSA加密算法C++实现

    2016-04-17 10:15:08
    非对称RSA加密算法的C++实现,有公钥和私钥,可完整运行

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 79,228
精华内容 31,691
关键字:

rsa加密算法