草庐IT

Crypt_RSA

全部标签

【RSA】RSA加密、解密、签名与验证

前言最近要做iOSSDK的联网授权,涉及到数据安全验证,因此想到使用RSA进行签名和验证。授权主要流程如下:1、客户方前往我方开放平台注册授权,得到AppId和AppSecret。2、客户方集成SDK,调用Register接口传入AppId和AppSecret。3、SDK将AppId和客户端平台相关信息提交给服务器后台。4、服务器下发最新服务器时间戳、sign、公钥、授权相关数据给客户端。5、客户端使用公钥进行签名验证。6、签名验证通过计算授权时间是否有效。简单介绍就是服务器端生成秘钥对,使用私钥对客户端和开放平台提交的参数进行签名,然后下发签名和公钥(经过处理的字符串)到客户端,客户端验签通

RSA+AES实现混合加密

为什么使用RSA+AES混合加密1.加密介绍RSA加密:属于非对称加密,公钥用于对数据进行加密,私钥对数据进行解密,两者不可逆。公钥和私钥是同时生成的,且一一对应。比如:客户端拥有公钥,服务端拥有公钥和私钥。客户端将数据通过公钥进行加密后,发送密文给服务端,服务端可以通过私钥和公钥进行解密。AES加密:属于对称加密,简单点说就是,客户端用密码对数据进行AES加密后,服务端用同样的密码对密文进行AES解密。2.加密思路利用RSA来加密传输AES的密钥,用AES的密钥来加密数据。既利用了RSA的灵活性,可以随时改动AES的密钥;又利用了AES的高效性,可以高效传输数据。3.混合加密原因单纯的使用R

RSA-CRT 使用中国剩余定理CRT对RSA算法进行解密

RSA-CRT前言一、中国剩余定理(CRT)二、欧拉定理三、RSA正常解密流程四、举例如下:前言使用中国剩余定理对RSA进行解密,可以提高RSA算法解密的速度。有关数论的一些基础知识可以参考以下文章:密码学基础知识-数论(从入门到放弃)一、中国剩余定理(CRT)设p和q是不同的质数,且n=p*q。对于任意(X1,x2),其中0≤x1中国剩余定理给出了以下的一元线性同余方程组:x1=xmodpx2=xmodq因此,任何整数x(0二、欧拉定理欧拉定理是费马小定理的推广。或称为欧拉-费马定理。n是一个正整数,a是gcd(a,n)=1的任意整数,则a^Φ(n)=1(modn)。Φ(n)是欧拉函数,即不

麻烦将字符串转换为“ RSA”加密(Java)的字节

我想创建一些Java函数以添加AndroidStudio应用程序。这些功能的目的开始使用RSA加密发送加密消息。我首先生成两个密钥。然后,我使用公众对我的消息进行加密,并且有效。然后,我将加密的消息从字节[]转换为String(),因为我想通过SMS发送消息。所有这些零件都有效。然后,我尝试重复使用我应该在短信中收到的短信,但它不起作用。我会遇到以下错误:"javax.crypto.BadPaddingException:Decryptionerror"在这一行中:“descrypteddata=cipher.dofinal(解密);”//(下面的CF代码)我用.tostring()函数以将从

java - 在 Java 中加载 RSA 私钥(algid 解析错误,不是序列)

我正在尝试将使用ssl生成的私有(private)RSAkey加载到java中,我的代码是:生成key:opensslgenrsa-outmykey.pem1024结果:-----BEGINRSAPRIVATEKEY-----MIICXAIBAAKBgQCUibP4fY2PA/sGMKMbU6usuIGcOAqgQjD6c2ylVo05Oz7pgjnE+O0l2MFRUYUGT5KKk/W+0cAXkxaQHE3n8A8X1mHT8eMDmWnzz0PeYjDE8LQmAw8RY2FnVKFAB36BIjdb5FsZmCk5QYKU5+nWLMqH/j/IR5AyX5wR2SMoslU

java - 在 Java 中加载 RSA 私钥(algid 解析错误,不是序列)

我正在尝试将使用ssl生成的私有(private)RSAkey加载到java中,我的代码是:生成key:opensslgenrsa-outmykey.pem1024结果:-----BEGINRSAPRIVATEKEY-----MIICXAIBAAKBgQCUibP4fY2PA/sGMKMbU6usuIGcOAqgQjD6c2ylVo05Oz7pgjnE+O0l2MFRUYUGT5KKk/W+0cAXkxaQHE3n8A8X1mHT8eMDmWnzz0PeYjDE8LQmAw8RY2FnVKFAB36BIjdb5FsZmCk5QYKU5+nWLMqH/j/IR5AyX5wR2SMoslU

java - 使用轻量级 API 生成 Bouncy CaSTLe RSA key 对

令人惊讶的是,网络上关于使用BouncyCaSTLe的轻量级API的信息非常少。环顾了一会后,我能够整理出一个基本示例:RSAKeyPairGeneratorgenerator=newRSAKeyPairGenerator();generator.init(newRSAKeyGenerationParameters(newBigInteger("10001",16),//publicExponentSecureRandom.getInstance("SHA1PRNG"),//prng1024,//strength80//certainty));AsymmetricCipherKeyPa

java - 使用轻量级 API 生成 Bouncy CaSTLe RSA key 对

令人惊讶的是,网络上关于使用BouncyCaSTLe的轻量级API的信息非常少。环顾了一会后,我能够整理出一个基本示例:RSAKeyPairGeneratorgenerator=newRSAKeyPairGenerator();generator.init(newRSAKeyGenerationParameters(newBigInteger("10001",16),//publicExponentSecureRandom.getInstance("SHA1PRNG"),//prng1024,//strength80//certainty));AsymmetricCipherKeyPa

RSA算法加解密过程全解析

不同于传统的对称加密算法体系,非对称公私钥密码系统中的加密密钥和解密密钥是相互分开的,加密密钥用于公开给别人加密,而只有持有解密密钥的人才能对信息进行解密。1976年诞生过不少非对称密码算法,但是RSA是其中最容易让人理解的。下文将尝试对RSA实现的具体流程进行解析。寻找合适的加密、解密函数我并不知道RSA最初的诞生经过了怎样的启发与灵光一闪,但仍有办法切入RSA的设计思路,现在,我们从它的实际效果:公钥加密,私钥解密来入手,尝试一步步分析它,了解它。我们首先面临的问题是,如果想要达到加解密的钥匙分开的效果,应当怎么做呢?先尝试使用数学语言抽象化描述一下这个问题:设加密函数为f1(m,e)f_

java - 在 Java 中生成 PKCS#1 格式的 RSA key

当我使用JavaAPI生成RSAkey对时,公钥以X.509格式编码,而私钥以PKCS#8格式编码。我希望将两者都编码为PKCS#1。这可能吗?我花了相当多的时间浏览Java文档,但还没有找到解决方案。当我使用Java和BouncyCaSTLe提供程序时,结果是相同的。下面是一段代码:KeyPairGeneratorkeygen=KeyPairGenerator.getInstance("RSA","BC");keygen.initialize(1024);KeyPairpair=keygen.generateKeyPair();PrivateKeypriv=pair.getPriva