草庐IT

AES_cbc_encrypt

全部标签

php - Android 和 PHP 服务器 : encrypt and decrypt data

我有一个与我自己的服务器通信的Android应用程序。由于我们没有https,所以我想实现自己的数据加密。服务器是用PHP实现的。我想使用AES,但我的主要问题是与本地应用程序共享服务器key,因为它可能会被拦截,然后任何人都可以解密我的消息。我应该改用RSA吗?还是有一种安全的方式来共享key?谢谢! 最佳答案 您应该使用RSA和AES加密协议(protocol)。RSA加密/解密短字符串(对CPU来说很重)。AES加密/解密大字符串(它比RSA更快)。所以:客户端为每个请求创建一个随机的AESkey(24字节即可);客户端用AE

android - 亚马逊 AppStore 提交失败 : "Sensitive information like password is echoed in clear text without encryption"

我已经向亚马逊应用商店提交了申请,但被拒绝了,具体情况如下:Sensitiveinformationlikepasswordisechoedincleartextwithoutencryption显然,这不是什么好事……但是我已经检查了应用程序代码。用户的密码作为MD5哈希存储在私有(private)首选项中(它直接从文本框到md5哈希再到首选项,并且不会以明文形式记录或写入任何地方。当我们向我们的WebAPI发送请求时(通过http),我们会发送一个带有用户名的header,以及以下串联字符串的哈希值(随机数+时间戳+密码哈希)(以及其他一些位)。我假设它与header中的数据有关,

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

java - 如何在 Java(Android) 中生成与 .Net 中相同的 AES key ?

我需要根据.NetWebService提供的盐和密码在Java(Android)中生成AESkey。我需要使用与.net中生成的key相同的key,并使用相同的密码和盐(使用Rfc2898DeriveBytes和AesManaged())。这是我在Android中的代码:char[]passwordAsCharArray=password.toCharArray();PBEKeySpecpbeKeySpec=newPBEKeySpec(passwordAsCharArray,salt,1000,256);SecretKeyFactoryfactory=SecretKeyFactory.

Android AES/GCM/NoPadding 特定长度输入字节的错误?

我写了一个类,用于对任意数据进行解密和加密。它是这样工作的:因为AndroidKeyStore生成的AESkey在卸载应用程序后“丢失”,我们有一个公钥/私钥对,其中公钥包含在应用程序中。出于失败保存的目的,它用于加密AESkey,该key沿着IV填充在每个加密消息的前面。这样我们就可以用我们的私钥恢复AESkey在单元测试中,我发现它适用于大多数输入。奇怪的是,在某些字节数组长度上它失败了(我发现即81920、131073。)这是AESCrypto代码:packagecom.mycompany.appname.crypto;importandroid.content.Context;