MARS / ECB / NoPadding和IllegalBlockSizeException

时间:2016-04-24 07:09:14

标签: java encryption cryptography ecb

我正在使用IBM SDK Java Technology Edition和以下代码:

KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA");      
SecureRandom random = SecureRandom.getInstance("IBMSecureRandom", "IBMJCE");        
random.setSeed(longToBytes(System.currentTimeMillis()));
keyGen.initialize(512, random);

KeyPair pairTytus = keyGen.generateKeyPair();
KeyPair pairRomek = keyGen.generateKeyPair();
KeyPair pairAtomek = keyGen.generateKeyPair();

// Making a wrap-key for private keys; based on password.
byte[] key = ("password").getBytes("UTF-8");
MessageDigest sha = MessageDigest.getInstance("SHA-1");
key = sha.digest(key);
key = Arrays.copyOf(key, 16); // use only first 128 bit

SecretKeySpec secretKeySpec = new SecretKeySpec(key, "MARS");

Cipher c1 = Cipher.getInstance("MARS/ECB/NoPadding");
c1.init(Cipher.WRAP_MODE, secretKeySpec);

c1.wrap(pairTytus.getPrivate());

在运行应用程序时,我遇到了这个例外:

  

线程中的异常" main" javax.crypto.IllegalBlockSizeException:   输入长度不是16个字节的倍数。

我在某处看到它与使用" NoPadding"有关,但是MARS并没有在这个库中实现任何填充。有什么想法如何避免这种异常?

我需要在这个地方同时使用MARS和ECB。

0 个答案:

没有答案