首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

EncryptionException:javax.crypto.IllegalBlockSizeException:使用填充密码解密时,输入长度必须是8的倍数

EncryptionException: javax.crypto.IllegalBlockSizeException: 使用填充密码解密时,输入长度必须是8的倍数。

这个错误通常出现在使用密码填充算法(如PKCS #1)进行加密时,如果输入的密码不是8的倍数,就会抛出这个异常。

要解决这个问题,可以尝试以下方法:

  1. 使用更长的密码,使得其长度是8的倍数,或者使用密码填充算法(如PKCS #5)来填充密码。
  2. 更换加密算法,使用更适用于长输入密码的加密算法,如AES等。
  3. 使用现成的加密库,如Java的JCA等,这些库通常会自动处理密码填充,避免出现此类问题。
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

通过 Java Service了解 PBKDF2 算法及在java中使用

使用盐有几个重要作用:: 唯一哈希:Salt可以确保每个密码哈希值都是唯一,即使密码本身相同。...即使两个用户密码相同,使用不同盐也会产生不同哈希值。 密码安全增强:Salt 这使得计算哈希值过程变得更加复杂,攻击者在试图通过暴力破解密码需要花费更多计算资源和时间。...构造函数 在构造函数中,主密码 ( masterPassword) 和盐 ( salt) 被初始化。这些值将用于创建加密密钥。必须确保主密码和盐长度符合最低安全要求。...; cipher.init(cipherMode, generateSecretKeySpec(), ivSpec); return cipher; } 加密 该 encrypt 方法使用初始化密码来加密输入数据...该 decrypt 方法使用初始化密码解密使用该方法加密字符串 encrypt 。

59740

Android 安全

查找表包含有限字符固定长度纯文本密码一种空间换时间实践,在暴力破解中,使用更多存储空间与较少计算能力,但比每一次输入散列查找表使用更少储存空间与更多计算能力 可以通过以下方法增加破解难度:...) ,K=块大小,l=数据长度,如果l=8, 则需要填充额外8个byte8使用NoPadding模式,要求输入长度必须为16字节倍数,又设置了CBC模式,还需附带一个IV参量,增加加密算法强度...用私钥加密必须通过公钥解密,用公钥加密必须通过私钥解密 密钥不要低于512位,512位与1024位都已经被成功破解,所以建议使用2048位密钥长度,进行数字签名 android系统RSA实现是"RSA...个人觉得服务器要求解密效率高,客户端私钥加密,服务器公钥解密比较好 RSA算法最流行公钥密码算法,使用长度可以变化密钥。RSA第一个既能用于数据加密也能用于数字签名算法。...SQL 注入 SQL注入攻击指的是未将数据与代码进行严格隔离,导致用户在读取数据,错误将代码当做数据执行,导致一些安全问题,典型例子当对SQL语句进行拼接操作,直接将未加转义用户输入内容作为变量

1.1K10
  • 小课堂 | RSA加密数据太长报错解决

    很多时候,我们需要在开发中对某些数据加密,比如登录对密码进行RSA加密。 RSA加密算法一种非对称加密算法,公钥加密私钥解密。...即输入数据长度小于等于密钥位数/8-11,例如:1024位密钥,1024/8-11 =117。不足部分,程序会自动补齐。加密后数据还是等于密钥位数/8。...Cipher提供加解密API,其中RSA非对称加密解密内容长度有限制,加密长度不超过117Byte,解密长度不超过128Byte,报错如下:javax.crypto.IllegalBlockSizeException...3、解决 既然Cipher加解密长度限制,那么如果超过117 bytes,我们可以采用分段加密、分段解密方式进行。...) { // 注意要使用2倍数,否则会出现加密后内容再解密为乱码 byte[] doFinal = cipher.doFinal(ArrayUtils.subarray(data

    6.3K71

    RSA加密算法原理

    : RSA加密算法一种非对称加密算法,所谓非对称,就是指该算法加密和解密使用不同密钥,即使用加密密钥进行加密、解密密钥进行解密。...N = p * q 4.2 求L: L p-1 和 q-1最小公倍数,可用如下表达式表示 L = lcm(p-1,q-1) 4.3 求E: E必须满足两个条件:E一个比1大比L小数...六、Java进行 RSA 加解密不得不考虑到那些事儿: 1、质数选择: 首先要使用概率算法来验证随机产生整数是否质数,这样算法比较快而且可以消除掉大多数非质数。...RSA速度对应同样安全级别的对称密码算法1/1000左右。 一般使用对称算法来加密数据,然后用RSA来加密对称密钥,然后将用RSA加密对称密钥和用对称算法加密消息发送出去。...这样一来对随机数要求就更高了,尤其对产生对称密码要求非常高,因为否则的话可以越过RSA来直接攻击对称密码。 3、加密系统不要具备解密功能,否则 RSA 可能不太合适: 公钥加密,私钥解密

    8.7K30

    .NET中DES对称加密

    一般密码长度8个字节,其中56位加密密钥,每个第8位都用作奇偶校验。...;当然缺点解密需要保证密文正确性,如果网络传输发生了一部分错误,则后面的解密结果就可能错误;(ECB模式仅影响传输错误那个块。...将明文分成n个64比特分组,如果明文长度不是64比特倍数,则在明文末尾填充适当数目的规定符号。...但是封装DES算法默认都是8字节,所以可以认为他们一样。数据补位实际在数据不满8字节倍数,才补充到8字节倍数填充过程。...而且Key必须8字节数据,否则会直接抛异常出来,当使用ECB模式下,不管传入什么IV向量,加密结果都一样。

    1.8K100

    RSA 敏感数据加解密方案

    由于RSA密码既可用于加密,又可用于数字签名,通俗易懂,因此RSA密码已成为目前应用最广泛公开密钥密码。RSA算法现今使用最广泛公钥密码算法,也是号称地球上最安全加密算法。...在了解RSA算法之前,先熟悉下几个术语,根据密钥使用方法,可以将密码分为对称密码和公钥密码。...对称密码:加密和解密使用同一种密钥方式 公钥密码:加密和解密使用不同密码方式,因此公钥密码通常也称为非对称密码。...RSA加密方式和解密方式相同,加密求`e次方mod n;解密求d次方mod n,此处d解密(Decryption)首字母;n数字(Number)首字母;e加密(Encrypt)首字母...加密 准备明文必须小于N数,因为加密或者解密都要mod N其结果必须小于N 假设明文 = 123 则 密文=明文^E mod N=123^5 mod 323=225 解密 明文=密文^D mod

    1.2K20

    30分钟搞定AES系列(上):基础特性

    缺点就是只能加密长为BlockSize倍数信息,一般不会使用。...ZerosPadding:全部填充0x00,无论缺多少全部填充0x00,已经BlockSize倍数仍要填充,一般工程上不使用这种方式。...PKCS#7:缺几个字节就填几个字节,每个字节值为缺字节数;当长度不对齐,将数据填充到满足分组长度;当长度刚好对齐,在原始数据末尾新增一个填充块;OpenSSL在AES加密中默认使用PKCS#7...,平时在使用,我们密钥长度、IV长度、分组长度与加密轮转次数关系如下图:图片在 CBC 模式加密中,第一个输入通过将明文第一个块与 IV 异或形成。...前向密码函数应用于第一个输入块,并且结果输出块密文第一个块。该输出块还与第二个明文数据块异或以产生第二个输入块,并应用前向密码函数以产生第二个输出块。

    4.6K3018

    Golang DES 加解密如何实现?

    模式 由于分组密码算法只能加密固定长度分组,所以当加密明文超过分组密码长度,就需要对分组密码算法进行迭代,而迭代方法就称为分组密码模式。...填充方式 在按8个字节对DES进行加密或解密,如果最后一段字节不足8位,就需要对数据进行补位。即使加密或解密数据刚好8倍数,也会再补8位。...密码 DES密钥长度64比特,但由于每隔7个比特会设置一个用于错误检测比特,因此其实质密钥长度为56比特。...一般来说,每次加密都会随机产生一个不同比特序列来作为初始化向量。偏移量长度必须和块大小相同。...下面以上面提到几种模式和填充方式为例,进行演示如何在代码中使用。 加密模式采用ECB、填充方式采用pkcs5padding、密码使用"12345678",输出时经hex编码。

    1.8K20

    Java安全之安全加密算法

    散列函数:主要用于验证数据完整性,长度不受限制,hash值容易计算,散列运算过程不可逆如:MD5、SHA 0x02 散列算法 Hash,一般翻译做散列、杂凑,或音译为哈希,把任意长度输入(又叫做预映射...简单说就是一种将任意长度消息压缩到某一固定长度消息摘要函数。 MD5 md5运用范围也比较广,比如在一些数据库存储密码时候会去使用到该算法去进行加密存储。...或者可以使用SecureRandom()类,让他根据选择加密算法使用默认密钥长度。...,“由已知加密密钥推导出解密密钥在计算上不可行密码体制。...RSA算法实现了公钥加密、私钥解密 和私钥解密、公钥加密一个机制。 也就是说使用公钥来进行加密,想要解密获取明文内容,就必须使用对应私钥来进行解密

    1.3K20

    安卓应用安全指南 5.6.1 密码学 示例代码

    保护数据免受第三方窃听 检测第三方所做数据伪造 5.6.1.1 使用基于密码密钥加密和解密 你可以使用基于密码密钥加密,来保护用户机密数据资产。 要点: 显式指定加密模式和填充。...使用强加密技术(特别是符合相关标准技术),包括算法,分组加密模式和填充模式。 从密码生成密钥使用盐。 从密码生成密钥,指定适当哈希迭代计数。 使用足以保证加密强度密钥长度。...要点: 显式指定加密模式和填充 使用强加密方法(特别是符合相关标准技术),包括算法,分组加密模式和填充模式。 使用足以保证加密强度密钥长度。...要点: 显式指定加密模式和填充使用强加密方法(特别是符合相关标准技术),包括算法,分组加密模式和填充模式。 从密码生成密钥使用盐。 从密码生成密钥,指定适当哈希迭代计数。...要点: 显式指定加密模式和填充使用强加密方法(特别是符合相关标准技术),包括算法,分组加密模式和填充模式。 使用足以保证签名强度密钥长度

    39610

    【爬虫知识】爬虫常见加密解密算法

    PCBC:Propagating Cipher Block Chaining(填充密码块链接模式),也称为明文密码块链接模式(Plaintext Cipher Block Chaining),一种可以使密文中微小更改在解密导致明文大部分错误模式...常见填充方式有以下几种: PKCS7:在填充首先获取需要填充字节长度 = 块长度 - (数据长度 % 块长度), 在填充字节序列中所有字节填充为需要填充字节长度值。...ZeroPadding:在填充首先获取需要填充字节长度 = 块长度 - (数据长度 % 块长度), 在填充字节序列中所有字节填充为 0 。...ISO10126:在填充首先获取需要填充字节长度 = 块长度 - (数据长度 % 块长度),在填充字节序列中最后一个字节填充为需要填充字节长度值,填充字节中其余字节均填充随机数值。...ANSIX923:在填充首先获取需要填充字节长度 = 块长度 - (数据长度 % 块长度),在填充字节序列中最后一个字节填充为需要填充字节长度值,填充字节中其余字节均填充数字零。

    8.4K20

    CC++ 常用加密与解密算法

    每个 6 位块对应编码表中一个字符。如果数据长度不是 3 倍数使用 '=' 字符进行填充。解码过程编码逆过程。...AES可使用16、24或32字节密钥(对应128、192和256位),AES分为ECB和CBC模式,处理数据必须块大小16倍数。...MD5 一种不可逆哈希函数,其核心原理包括以下几步:填充: 对输入数据进行填充,使其长度满足 512 位倍数,并在数据尾部附加原始数据长度二进制表示。...其核心过程包括以下几个步骤:填充: 将输入数据填充到满足 512 位块大小倍数,并在数据尾部添加原始数据长度二进制表示。初始化: 初始化 256 位缓冲区,用于存储中间计算结果。...CryptReleaseContext 函数,用于释放密码学上下文。密码学上下文在进行加密或哈希操作所创建使用完毕后需要通过 CryptReleaseContext 来释放相关资源。

    1.3K10

    CC++ 常用加密与解密算法

    将每组 3 个字节拆分成 4 个 6 位块。 每个 6 位块对应编码表中一个字符。 如果数据长度不是 3 倍数使用 '=' 字符进行填充。 解码过程编码逆过程。...AES可使用16、24或32字节密钥(对应128、192和256位),AES分为ECB和CBC模式,处理数据必须块大小16倍数。...MD5 一种不可逆哈希函数,其核心原理包括以下几步: 填充: 对输入数据进行填充,使其长度满足 512 位倍数,并在数据尾部附加原始数据长度二进制表示。...其核心过程包括以下几个步骤: 填充: 将输入数据填充到满足 512 位块大小倍数,并在数据尾部添加原始数据长度二进制表示。 初始化: 初始化 256 位缓冲区,用于存储中间计算结果。...CryptReleaseContext 函数,用于释放密码学上下文。密码学上下文在进行加密或哈希操作所创建使用完毕后需要通过 CryptReleaseContext 来释放相关资源。

    90610

    java中Cipher类

    大家好,又见面了,我你们朋友全栈君。 该类位于javax.crypto包下,声明为 public class Cipher extends Object 此类为加密和解密提供密码功能。...转换 一个字符串,它描述为产生某种输出而在给定输入上执行操作(或一组操作)。转换始终包括加密算法名称(例如,DES),后面可能跟有一个反馈模式和填充方案。...因此,通过使用如 CFB8 或 OFB8 8 位模式,Cipher 块可以被转换为面向字节 Cipher 流。...Cipher 为 Cipher 块,未请求任何填充(只针对加密模式),并且由此 Cipher 处理数据总输入长度不是块大小倍数;如果此加密算法无法处理所提供输入数据。...,并且要包装密钥编码长度不是块大小倍数

    1.1K30

    DES数据加密标准

    一、DES加密/解密在线工具文档 1.1、DES加密/解密算法介绍 DES加密/解密算法一种可逆对称加密算法,这类算法在加密和解密使用相同密钥,或是使用两个可以简单地相互推算密钥,一般用于服务端对服务端之间对数据进行加密...二、DES加密/解密在线工具使用须知 2.1、DES填充模式 块密码只能对确定长度数据块进行处理,而消息长度通常是可变,因此不同工作模式对应填充模式不同,当您选择NONE不填充,则要保证加密文本长度为...8倍数,否则出现DES解密/加密异常。...区块长度:DES标准规定区块长度只有一个值,固定为64Bit,对应字节为8位; 密钥KEY:该字段不能公开传输,用于加密和解密数据; 初始化向量IV:该字段可以公开,用于将加密随机化。...然而在大多数情况中,不应当在使用同一密钥情况下两次使用同一个IV,一般初始化向量IV为8随机值。

    1.9K00

    NodeJS加密算法(一)

    推荐:AES AES加解密特点 分组长度128bit,也就是16字节。 加密第一步,针对每个分组逐个字节进行SubBytes操作。...解密过程就是加密逆向过程。 分组密码模式 对称密钥算法DES、AES都属于分组密码,分组密码特点分组长度固定。但是由于明文长度不固定且基本超过分组长度,所以就需要进行多轮迭代加密。...注意:调用 final() 后不能再用 Cipher 对象 cipher.setAutoPadding(auto_padding=true) :设置输入数据自动填充到块大小功能,这个函数必须在 cipher.final...如果 auto_padding false,那么整个输入数据长度必须加密器块大小倍数,否则 final 会失败。这对非标准填充很有用,例如:使用 0x0 而不是 PKCS 填充。...公钥与私钥一对,如果用公钥对数据进行加密,只有用对应私钥才能解密。因为加密和解密使用两个不同密钥,所以这种算法叫作非对称加密算法。 公开密钥加密 ?

    2.2K10

    RSA加密解密

    -----END PRIVATE KEY----- 经过对比,我们可以明显看到,PKCS #8 格式没有rsa字样,因为PKCS#8一个通用型密钥格式方案,它不仅为RSA算法所使用,同样也可以被其它加密解密算法所使用...2.1、场景一:生成RSA公钥和私钥 首先输入证书密码(一般为空,无须输入),然后选择密钥格式和密钥长度,最后点击按钮即可得到对应RSA密钥对,你可以预览、复制和下载RSA密钥对到本地。...2.3、场景三:使用RSA私钥解密文本 主要用于RSA解密,具体RSA解密操作方式为: 首先选择填充模式,当填充模式选择ENCRYPTION_OAEP必须选择参数Hash和MGFHash。...如果证书设置了密码,则必须输入密码,然后输入RSA解密文本和RSA私钥。其中RSA解密文本必须为Base64编码后字符串,最后点击按钮进行RSA解密。...当填充模式选择SIGNATURE_PSS必须选择参数Hash和MGFHash。 SIGNATURE_PKCS1:公钥密码标准第一版方案,此RSA签名填充模式虽然已经不安全但是使用最为广泛。

    6.5K00
    领券