导航:首页 > 文档加密 > 安卓rsa接口参数加密

安卓rsa接口参数加密

发布时间:2025-03-09 06:39:22

‘壹’ RSA加密填充方式

RSA加密常用的填充方式有下面3种:

1.RSA_PKCS1_PADDING 填充模式,最常用的模式

要求:

输入:必须 比 RSA 钥模长(molus) 短至少11个字节, 也就是RSA_size(rsa) – 11。如果输入的明文过长,必须切割,然后填充

输出:和molus一样长

根据这个要求,对于512bit的密钥,block length = 512/8 – 11 = 53 字节

2.RSA_PKCS1_OAEP_PADDING

输入:RSA_size(rsa) – 41

输出:和molus一样长

3.for RSA_NO_PADDING不填充

输入:可以和RSA钥模长一样长,如果输入的明文过长,必须切割,然后填充

输出:和molus一样长

跟DES,AES一样,RSA也是一个块加密算法( block cipher algorithm),总是在一个固定长度的块上进行操作。但跟AES等不同的是,block length是跟key length有关的。每次RSA加密的明文的长度是受RSA填充模式限制的,但是RSA每次加密的块长度就是key length。

需要注意:

假如你选择的秘钥长度为1024bit共128个byte:

1.当你在客户端选择RSA_NO_PADDING填充模式时,如果你的明文不够128字节加密的时候会在你的明文前面,前向的填充零。解密后的明文也会包括前面填充的零,这是服务器需要注意把解密后的字段前向填充的零去掉,才是真正之前加密的明文。

2.当你选择RSA_PKCS1_PADDING填充模式时,如果你的明文不够128字节加密的时候会在你的明文中随机填充一些数据,所以会导致对同样的明文每次加密后的结果都不一样。对加密后的密文,服务器使用相同的填充方式都能解密。解密后的明文也就是之前加密的明文。

3.RSA_PKCS1_OAEP_PADDING填充模式没有使用过, 他是PKCS#1推出的新的填充方式,安全性是最高的,和前面RSA_PKCS1_PADDING的区别就是加密前的编码方式不一样。

java默认RSA实现

一个优秀的加密必须每次生成的密文都不一致,即使每次你的明文一样、使用同一个公钥。因为这样才能把明文信息更安全地隐藏起来。

Java 默认的 RSA 实现是 "RSA/None/PKCS1Padding"(比如 Cipher cipher = Cipher.getInstance("RSA");句,这个 Cipher 生成的密文总是不一致的),Bouncy Castle 的默认 RSA 实现是 "RSA/None/NoPadding"。

为什么 Java 默认的 RSA 实现每次生成的密文都不一致呢,即使每次使用同一个明文、同一个公钥?这是因为 RSA 的 PKCS #1 padding 方案在加密前对明文信息进行了随机数填充。

你可以使用以下办法让同一个明文、同一个公钥每次生成同一个密文,但是你必须意识到你这么做付出的代价是什么。比如,你可能使用 RSA 来加密传输,但是由于你的同一明文每次生成的同一密文,攻击者能够据此识别到同一个信息都是何时被发送。

‘贰’ 为什么rsa加密时我把密钥长度设成256位,太长的字符串加密

在RSA加密中,选择密钥长度为256位是一个常见的做法,但这并非无懈可击。为了深入理解为什么密钥长度至关重要,我们首先需要明确RSA加密的基本原理。RSA基于两个基本的数学原理:大数分解的困难性和模运算的性质。它是一种非对称加密算法,使用一对密钥:公钥和私钥。

在实际应用中,RSA加密不仅仅是对明文进行加密,而是在特定格式下处理数据。这种格式,即padding,对于保护数据安全至关重要。通过padding,可以确保明文数据在加密之前具有一定的随机性,从而增强数据的安全性,防止多种攻击,包括选择明文攻击和密码分析。

例如,考虑使用非常小的参数进行RSA加密,如短公钥和密钥长度。在这种情况下,加密数据可能具有较低的随机性,使得通过简单的数学操作(如计算三次根)轻易地恢复原始明文成为可能。这种攻击策略在密钥长度较短的情况下尤其有效,因为它允许攻击者通过有限的尝试来解密数据。

为了解决这一问题,RSA加密标准如PKCS #1 v2.1引入了特定的padding模式。这种padding确保了明文数据在加密前具有足够的随机性,同时通过特定的格式和规则,增加了密钥的复杂度和安全性。例如,padding可能包括一个固定前导零字节、一个标识符(如0x02)和一个随机生成的前缀(PS),后跟明文数据和一个终止零字节。

这种padding不仅增加了数据的随机性,还通过引入额外的复杂性,使得攻击者难以利用数学漏洞来破解加密数据。同时,padding的引入还防止了特定类型的攻击,如Chinese Remainder Theorem(CRT)攻击,这种攻击依赖于在不同模数下解密的特性。通过遵循标准的padding规则,可以显着减少此类攻击的威胁。

综上所述,选择256位或更长的密钥长度,并遵循适当的padding规则,是确保RSA加密安全性的关键因素。这种做法不仅可以保护数据免受简单攻击,还能抵御更复杂的密码分析和技术攻击,为通信和数据保护提供坚实的防线。

‘叁’ android中自带的RSA加密算法和JAVA中的不是一个标准的吗

有点区别,java中默认填充方式是RSA/ECB/PKCS1Padding,Cipher.getInstance("RSA/ECB/PKCS1Padding");android不是

java
Cipher cipher =
Cipher.getInstance("RSA/ECB/PKCS1Padding");
android
Cipher cipher =
Cipher.getInstance("RSA/ECB/NoPadding");

‘肆’ 求安卓加密,安卓应用加密方式

android是用java语言开发的,java语言,JDK给我们提供了非常多的加密算法

如基本的单向加密算法:

  1. BASE64 严格地说,属于编码格式,而非加密算法

  2. MD5(Message Digest algorithm 5,信息摘要算法)

  3. SHA(Secure Hash Algorithm,安全散列算法)

  4. HMAC(Hash Message Authentication Code,散列消息鉴别码)


复杂的对称加密(DES、PBE)、非对称加密算法:

  1. DES(Data Encryption Standard,数据加密算法)

  2. PBE(Password-based encryption,基于密码验证)

  3. RSA(算法的名字以发明者的名字命名:Ron Rivest, AdiShamir 和Leonard Adleman)DH(Diffie-Hellman算法,密钥一致协议)

  4. DSA(Digital Signature Algorithm,数字签名)

  5. ECC(Elliptic Curves Cryptography,椭圆曲线密码编码学)


以下就是讲解BASE64、MD5、SHA、HMAC几种方法

MD5、SHA、HMAC这三种加密算法,可谓是非可逆加密,就是不可解密的加密方法。我们通常只把他们作为加密的基础。单纯的以上三种的加密并不可靠。


一. BASE64
按 照RFC2045的定义,Base64被定义为:Base64内容传送编码被设计用来把任意序列的8位字节描述为一种不易被人直接识别的形式。(The Base64 Content-Transfer-Encoding is designed to represent arbitrary sequences of octets in a form that need not be humanly readable.)
常见于邮件、http加密,截取http信息,你就会发现登录操作的用户名、密码字段通过BASE64加密的。


二. MD5

MD5 -- message-digest algorithm 5 (信息-摘要算法)缩写,广泛用于加密和解密技术,常用于文件校验。校验?不管文件多大,经过MD5后都能生成唯一的MD5值。好比现在的ISO校验,都 是MD5校验。怎么用?当然是把ISO经过MD5后产生MD5的值。一般下载linux-ISO的朋友都见过下载链接旁边放着MD5的串。就是用来验证文 件是否一致的。


三. SHA

SHA(Secure Hash Algorithm,安全散列算法),数字签名等密码学应用中重要的工具,被广泛地应用于电子商务等信息安全领域。虽然,SHA与MD5通过碰撞法都被破解了, 但是SHA仍然是公认的安全加密算法,较之MD5更为安全。


四. HMAC
HMAC(Hash Message Authentication Code,散列消息鉴别码,基于密钥的Hash算法的认证协议。消息鉴别码实现鉴别的原理是,用公开函数和密钥产生一个固定长度的值作为认证标识,用这个 标识鉴别消息的完整性。使用一个密钥生成一个固定大小的小数据块,即MAC,并将其加入到消息中,然后传输。接收方利用与发送方共享的密钥进行鉴别认证 等。

阅读全文

与安卓rsa接口参数加密相关的资料

热点内容
源码升级的意思 浏览:399
缓解压力手势图片下载 浏览:96
程序员抽烟找灵感 浏览:767
老火汤pdf 浏览:224
少有人走的路与心灵对话pdf 浏览:205
两单片机串口通信 浏览:801
程序员过试用期 浏览:108
算法信息量不可计算 浏览:954
android淘宝防止反编译 浏览:788
PIC单片机的内核寄存器 浏览:725
挤黑头解压视频耳朵 浏览:771
可编程序控制器及其应用实训总结 浏览:755
mcu单片机负载电路 浏览:57
解压员工培训游戏 浏览:283
局网怎么设置服务器地址 浏览:208
路由器如何关掉虚拟服务器端口 浏览:845
Mac调整PDF 浏览:184
华为c6s云服务器能干什么 浏览:880
免费简历模板pdf 浏览:15
java查询数据库表 浏览:476