Основываясь на ответах на другой вопрос, я пытаюсь зашифровать некоторый текст, но когда длина входных данных составляет 3 символа или меньше, я получаю следующее исключение:
Exception in thread "main" java.lang.IllegalArgumentException: input too short
at org.bouncycastle.crypto.fpe.SP80038G.checkLength(Unknown Source)
at org.bouncycastle.crypto.fpe.SP80038G.checkData(Unknown Source)
at org.bouncycastle.crypto.fpe.SP80038G.checkArgs(Unknown Source)
at org.bouncycastle.crypto.fpe.SP80038G.encryptFF1(Unknown Source)
at org.bouncycastle.crypto.fpe.FPEFF1Engine.encryptBlock(Unknown Source)
at org.bouncycastle.crypto.fpe.FPEEngine.processBlock(Unknown Source)
at org.bouncycastle.jcajce.provider.symmetric.util.BaseBlockCipher$BufferedFPEBlockCipher.doFinal(Unknown Source)
at org.bouncycastle.jcajce.provider.symmetric.util.BaseBlockCipher.engineDoFinal(Unknown Source)
at java.base/javax.crypto.Cipher.doFinal(Cipher.java:2202)
at org.example.AESFPE2.encrypt(AESFPE2.scala:38)
at org.example.AESFPE2.encrypt_test(AESFPE2.scala:25)
at org.example.App$.main(Main.scala:18)
at org.example.App.main(Main.scala)
Метод encrypt_test в следующем коде — это то, что я использую для проверки этой проблемы (остальные методы такие же, как и в ранее упомянутом вопросе):class AESFPE2 {
@throws[Exception]
def encrypt_test(): Unit = {
val key = getKeyFromPassword("foo", "bar")
val tweak = getTweak
val alphabetMapper = new BasicAlphabetMapper("\"'^*[]{}ºª|+-ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzáéíóúü!¿?¡=()/\\ _;:,.ç")
val radix = alphabetMapper.getRadix
val plaintext = "abc".toCharArray
val plain_bytes = alphabetMapper.convertToIndexes(plaintext)
val cipher = Cipher.getInstance("AES/FF1/NoPadding", new BouncyCastleProvider())
val cipher_bytes = encrypt(cipher, key, tweak, radix, plain_bytes)
val decrypted = decrypt(cipher, key, tweak, radix, cipher_bytes)
val cipher_chars = alphabetMapper.convertToChars(cipher_bytes)
println(new String(cipher_chars))
val plain_chars = alphabetMapper.convertToChars(decrypted)
println(new String(plain_chars))
}
@throws[NoSuchAlgorithmException]
@throws[InvalidKeySpecException]
def getKeyFromPassword(password: String, salt: String): SecretKey = {
val factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA256")
val spec = new PBEKeySpec(password.toCharArray, salt.getBytes, 65536, 256)
val secret = new SecretKeySpec(factory.generateSecret(spec).getEncoded, "AES")
secret
}
}
Подробнее здесь: https://stackoverflow.com/questions/769 ... -bouncy-ca
Причина ошибки: «слишком короткий ввод» при шифровании (с помощью FPE и надувного замка) в Java/Scala. ⇐ JAVA
Программисты JAVA общаются здесь
1729416967
Anonymous
Основываясь на ответах на другой вопрос, я пытаюсь зашифровать некоторый текст, но когда длина входных данных составляет 3 символа или меньше, я получаю следующее исключение:
Exception in thread "main" java.lang.IllegalArgumentException: input too short
at org.bouncycastle.crypto.fpe.SP80038G.checkLength(Unknown Source)
at org.bouncycastle.crypto.fpe.SP80038G.checkData(Unknown Source)
at org.bouncycastle.crypto.fpe.SP80038G.checkArgs(Unknown Source)
at org.bouncycastle.crypto.fpe.SP80038G.encryptFF1(Unknown Source)
at org.bouncycastle.crypto.fpe.FPEFF1Engine.encryptBlock(Unknown Source)
at org.bouncycastle.crypto.fpe.FPEEngine.processBlock(Unknown Source)
at org.bouncycastle.jcajce.provider.symmetric.util.BaseBlockCipher$BufferedFPEBlockCipher.doFinal(Unknown Source)
at org.bouncycastle.jcajce.provider.symmetric.util.BaseBlockCipher.engineDoFinal(Unknown Source)
at java.base/javax.crypto.Cipher.doFinal(Cipher.java:2202)
at org.example.AESFPE2.encrypt(AESFPE2.scala:38)
at org.example.AESFPE2.encrypt_test(AESFPE2.scala:25)
at org.example.App$.main(Main.scala:18)
at org.example.App.main(Main.scala)
Метод encrypt_test в следующем коде — это то, что я использую для проверки этой проблемы (остальные методы такие же, как и в ранее упомянутом вопросе):class AESFPE2 {
@throws[Exception]
def encrypt_test(): Unit = {
val key = getKeyFromPassword("foo", "bar")
val tweak = getTweak
val alphabetMapper = new BasicAlphabetMapper("\"'^*[]{}ºª|+-ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzáéíóúü!¿?¡=()/\\ _;:,.ç")
val radix = alphabetMapper.getRadix
val plaintext = "abc".toCharArray
val plain_bytes = alphabetMapper.convertToIndexes(plaintext)
val cipher = Cipher.getInstance("AES/FF1/NoPadding", new BouncyCastleProvider())
val cipher_bytes = encrypt(cipher, key, tweak, radix, plain_bytes)
val decrypted = decrypt(cipher, key, tweak, radix, cipher_bytes)
val cipher_chars = alphabetMapper.convertToChars(cipher_bytes)
println(new String(cipher_chars))
val plain_chars = alphabetMapper.convertToChars(decrypted)
println(new String(plain_chars))
}
@throws[NoSuchAlgorithmException]
@throws[InvalidKeySpecException]
def getKeyFromPassword(password: String, salt: String): SecretKey = {
val factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA256")
val spec = new PBEKeySpec(password.toCharArray, salt.getBytes, 65536, 256)
val secret = new SecretKeySpec(factory.generateSecret(spec).getEncoded, "AES")
secret
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/76913442/reason-for-the-error-input-too-short-when-encrypting-with-fpe-and-bouncy-ca[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия