草庐IT

Java AES 解密检测到不正确的 key

我正在编写对文件进行AES加密/解密的Android应用程序。我希望能够检测是否指定了不正确的密码,因此没有匹配的key用于解密。我正在使用带有256位key的AES/CBC/PKCS7Padding。如果我执行cipher.doFinal(),我可以尝试/捕获BadPaddingException,它告诉我出了点问题,可能是key不正确。但是如果我使用CipherInputStream读取加密文件,我不会得到关于填充正确性的反馈。因此,如果我故意指定不正确的密码,它会解密文件,然后报告一切正常,但解密后的文件完全是垃圾。所以我的问题是如何在使用CipherInputStream时检测

java - AES 加密 Android <-> iOS 消息长度 > 15 字节的不同结果

我在理解两个设备上的密码/加密器时遇到了一个真正的问题。1.如果我们在iOS和Android上使用CipherAES加密消息并且字符串的字符长度不大于16(例如“abcdefghijklmno”),我们在使用相同的key/密码加密后得到相同的结果。2。但是如果使用更长的消息,我们在iOS和Android上会得到不同的结果(例如“abcdefghijklmnop”)我做了很多研究如何为两个设备获取相同的参数,起初我认为这是安全的。这是我的加密密码:publicStringencode(Contextcontext,Stringpassword,Stringtext)throwsNoPas

Android加密/解密问题(AES)

我在这里需要一点帮助。所以基本上我必须在Android中测试图像的AES加密/解密。我是android编程的新手,这就是为什么我的一个friend给我一个例子来说明如何这样做,但问题是当我运行示例时,它会在20-30秒后崩溃,我不确定发生了什么。所以任何人都可以查看代码并告诉我问题出在哪里。示例代码需要这样做:加密和解密相同的图像并向我显示包含信息的日志,加密和解密图像需要多长时间。无论如何谢谢!代码:packagecom.cryptooo.lol;importjava.io.ByteArrayOutputStream;importjava.security.SecureRandom;

java - 将加密的 AES key 导入 Android Keystore 并将其存储在新别名下

我只是在熟悉AndroidKeystoreAPI。我发现可以使用以下功能:AtleastonsomedevicestheAndroidKeystoreishardwarebacked,meaningthatcryptooperationsruninasecureenvironment(TEE).Whenthekeystoreishardwarebacked,privateRSAkeysaswellassecretsymmetrickeysthathavebeencreatedwithintheKeystorecanbeconfiguredtoneverleavetheKeystorea

android - 在 Android 上向 AES-GCM 添加额外的经过身份验证的数据

我正在尝试将额外的身份验证数据(AAD)添加到Android上的AES-GCM。我看到Ciphernotes的Java7版本关于使用GCMParameterSpec和updateAAD(...)方法,但鉴于Android是基于Java6的,我完全没有想法。我使用SpongycaSTLe作为加密库GCMParameterSpecs=newGCMParameterSpec(...);cipher.init(...,s);cipher.updateAAD(...);//AAD 最佳答案 谢谢@andrey-我在BCmailinglist中

java - java中是否有以下Aes加密函数的Dart等价物

我已经设置了一个服务器,它通过下面提到的java函数监听加密的字节数组。早些时候我使用java(android)来构建我的应用程序,因此使用相同的java函数很容易,但我无法弄清楚该函数的dart等效(flutter)是什么,它将字符串作为输入并返回AES加密字节数组作为输出,我可以将其写入tcp套接字。我也非常感谢帮助我了解如何将生成的字节数组写入服务器,然后读取类似的响应并通过dart(flutter)解密它我已经成功地编写了简单的字符串并通过dart接收简单的字符串作为输入和输出到tcp服务器,但不能对加密的字节数组做同样的事情。在java中,我使用DataOutputStrea

java - java中是否有以下Aes加密函数的Dart等价物

我已经设置了一个服务器,它通过下面提到的java函数监听加密的字节数组。早些时候我使用java(android)来构建我的应用程序,因此使用相同的java函数很容易,但我无法弄清楚该函数的dart等效(flutter)是什么,它将字符串作为输入并返回AES加密字节数组作为输出,我可以将其写入tcp套接字。我也非常感谢帮助我了解如何将生成的字节数组写入服务器,然后读取类似的响应并通过dart(flutter)解密它我已经成功地编写了简单的字符串并通过dart接收简单的字符串作为输入和输出到tcp服务器,但不能对加密的字节数组做同样的事情。在java中,我使用DataOutputStrea

java - 在android中使用AES CTR模式随机访问InputStream

我无法找到用于随机访问的AESCTR加密的任何工作示例。有人可以指导我如何在CTRMODE中使用计数器以及如何实现跳转到流中的特定位置吗?默认流实现(CipherInputStream)不会跳过流,它会破坏纯文本。我正在尝试解密存储在AndroidSD卡上的加密视频文件。嵌入式HTTP文件服务器即时对其进行解密。一切正常,直到用户在视频中执行搜索:视频立即停止,因为它收到损坏的视频流。我正在使用以下代码来初始化和加密/解密流(为了简单起见,我对key进行了硬编码。它不会在生产中进行硬编码)ByteBufferbb=ByteBuffer.allocate(16);bb.put("1234

java - 'BadPaddingException : pad block corrupted' while decrypting using AES/ECB

在Android/java应用中,byte[]data=":ʺ$jhk¨ë‹òºÃ";//fetchedfromphpserver..Ciphercipher=Cipher.getInstance("AES");cipher.init(Cipher.DECRYPT_MODE,mKeyspec);returnnewString(cipher.doFinal(data));上面的代码总是抛出BadPaddingException:padblockcorrupted用于后续的16字节加密数据data=":ʺ$jhk¨ë‹òºÃ"(thedatais16chars)key长度为16个字节。

java - AES 加密 Java -> PHP -> Java

在我的Android应用程序中,我正在与网络服务通信,发送和响应的数据使用AES加密进行加密。所以我做的是以下内容。我正在将base64编码的AES加密JSON字符串发送到share.php然后Share.php将解密该字符串并将其插入数据库。之后,PHP将对响应进行加密和编码。然后我的Android应用程序需要解码和解密这条消息。但是PHP响应的解密不是很顺利。这是我的AES.java:publicclassAES{privatefinalStringcharacterEncoding="UTF-8";privatefinalStringcipherTransformation="A