草庐IT

ios - 判断 aes256 解密中是否使用了错误 key 的可靠方法

我有一些代码用于加密和解密ios应用程序中的某些字符串。该代码涉及CCCrypt的使用。有没有可靠的方法来测试所用key的有效性,而无需实际将key存储在任何地方?根据我的研究,似乎判断key是否有效的唯一方法是使用key长度和key哈希值。谁能为此指导我正确的方向? 最佳答案 要获得答案,需要了解一些有关正确加密的背景知识。您可能已经知道这一点,但大多数人都做错了,所以我将覆盖它。(如果您使用密码进行加密并且至少不对HMAC、两种盐和IV进行编码,那么您就错了。)首先,无论何时使用未经身份验证的模式(例如AES-CBC)进行加密,

ios - AES-256 加密和 Apple iTunes 导出限制

我有一个非常大的问题。我开发了3个应用程序,2个用于IOS,1个用于macosx,使用RNCryptor加密文件(女巫是一个CCCryptor(AES加密)包装器)。申请被拒绝了两次,他们在调解中心把这个发给我(两次):-----PLA2.3-----WefoundthatyourApplicationDescriptionstatesthatitencryptsdata.However,yourappdoesnothaveExportCompliance,whichdoesnotcomplywiththeiOSDeveloperProgramLicenseAgreement,asre

ios - AES 256 加密/解密错误 IOS SDK 7

我正在使用AES256来确保安全并以加密形式存储数据,这在IOS6及以下版本中运行良好,但是当我在IOS7中测试我的应用程序时,我没有获得之前存储的数据。经过调试,我发现在IOS7下解密不工作,返回空白。我的代码如下:-(NSData*)AES256DecryptWithKey:(NSString*)key{//'key'shouldbe32bytesforAES256,willbenull-paddedotherwisecharkeyPtr[kCCKeySizeAES256+1];//roomforterminator(unused)bzero(keyPtr,sizeof(keyPt

android - 大数的 SHA256 哈希结果在 Android 和 iOS 上不同

我正在尝试对BigInteger/BigNum进行哈希处理,但在Android/iOS中得到了不同的结果。我需要获得相同的哈希结果,以便两个应用程序都按照SRP协议(protocol)工作。仔细检查它对正数工作正常但对负数不起作用(第一个半字节大于7)。不确定哪个是正确的,哪个是要调整以与另一个匹配。安卓:voidhashBigInteger(Strings){try{BigIntegera=newBigInteger(s,16);MessageDigestsha=MessageDigest.getInstance("SHA-256");byte[]b=a.toByteArray();

iphone - 如何在 ios 中生成 SHA256 和 CRC32

我正在做文件上传工作。我想生成SHA256和CRC32哈希值。任何人都可以帮助我如何生成这些哈希值?我想让它适用于iOS。 最佳答案 SHA256在CommonCrypto中可用。CRC32不是哈希,它是循环冗余校验。示例代码:#importNSData*dataIn=[@"Nowisthetimeforallgoodcomputerstocometotheaidoftheirmasters."dataUsingEncoding:NSASCIIStringEncoding];NSMutableData*macOut=[NSMutab

security - 使用 AES-256-CBC 与 block 加密的文件加密

首先这是我在这里的第一个问题,我希望我能让你清楚地了解这个问题,也能帮助其他可能面临类似挑战的人!问题的标题也是我能得到的最短的TL;DR:-)因此,为了给您一些背景知识,我基本上是在设计一个协议(protocol),该协议(protocol)需要从服务器(在Node.js中实现)到设备的同步和有序文件传输,通过TCP。流式传输文件不是一种选择,因此每个文件block都封装在一条消息中,该消息具有其他非加密字段,这超出了这个问题的范围。其中一个要求是文件内容不能以纯文本形式发送,因此必须选择一种加密方案,在这种情况下我选择了AES-256-CBC,假设为了这个问题的目的,算法不能改变。

ios - JWT 使用 HMACSHA256 验证签名并通过 Swift 显示 "Invalid Signature"

我有一个关于JWT的问题。我尝试创建自己的签名并使用硬编码key“hello1234567890987654321test1234”。然后我使用我的函数创建签名并发布到https://jwt.io/进行解码。然后这个网页显示“无效签名”。我的HMACSHA256函数有什么问题?我在网页上找到了“-”,“_”,并在我的输出签名中转换了“+”,“/”。如何修复我的输出签名?这个签名是否正确?我还在Google中搜索了两个HMACSHA256方法。我不知道哪个更好。请给我一些选择的建议。谢谢。图片:方法一:enumCryptoAlgorithm{caseMD5,SHA1,SHA224,SHA

java - 在 JUnit 中生成 HmacSHA256 签名

我正在尝试将我的消息签名到AmazonAWS(在JUnit测试中),但我遇到了一个问题。这是我正在使用的代码:StringsecretAccessKey="secret1234678901";SecretKeySpeckeySpec=newSecretKeySpec(secretAccessKey.getBytes(UTF-8),"HmacSHA256");Macmac=Mac.getInstance(this.MAC_ALGO);mac.init(keySpec);//hereitbreaksbyte[]encoded=mac.doFinal(request.toString().g

java - Android Studio - 无法识别的 VM 选项 'MaxPermSize=256m'

我刚刚在ElementaryOS0.3Freya上安装了AndroidStudio并使用终端运行它。然而,在我第一次启动时,显示了一条错误消息:Gradle'Test'projectrefreshfailedUnabletostartthedaemonprocess.Thisproblemmightbecausedbyincorrectconfigurationofthedaemon.Forexample,anunrecognizedjvmoptionisused.Pleaserefertotheuserguidechapteronthedaemonathttp://gradle.or

Java 使用 AES 256 和 128 对称 key 加密

我是密码技术的新手。我发现这段代码可以进行对称加密。byte[]key=//...secretsequenceofbytesbyte[]dataToSend=...Cipherc=Cipher.getInstance("AES");SecretKeySpeck=newSecretKeySpec(key,"AES");c.init(Cipher.ENCRYPT_MODE,k);byte[]encryptedData=c.doFinal(dataToSend);它的工作。在这里我可以使用我自己的密码。这正是我所需要的。但我不知道如何进行128或256对称加密。如何在我的代码中使用128和2