天道酬勤,学无止境

encryption

检查 Android 文件系统是否已加密(Check if Android filesystem is encrypted)

问题 我们正在为 Android 开发安全应用程序。 用户需要对其设备的文件系统进行加密,但我们必须检查这一事实并禁止使用 app。 是否可以检查文件系统是否已加密? 还有一些 Android < 3.0 的设备支持加密,例如 Motorola RAZR。 了解此类设备上的加密会很有趣。 回答1 为了澄清 CommonsWare 的答案,您可以在没有任何 Android 权限的情况下读取设备加密状态。 /** * Returns the encryption status of the device. Prior to Honeycomb, whole device encryption was * not supported by Android, and this method returns ENCRYPTION_STATUS_UNSUPPORTED. * * @return One of the following constants from DevicePolicyManager: * ENCRYPTION_STATUS_UNSUPPORTED, ENCRYPTION_STATUS_INACTIVE, * ENCRYPTION_STATUS_ACTIVATING, ENCRYPTION_STATUS_ACTIVE, * ENCRYPTION_STATUS_ACTIVE

2021-12-09 03:11:20    分类:技术分享    android   security   encryption   filesystems

我的 CryptoJS 加密/解密不起作用(My CryptoJS encryption/decryption is not working)

问题 我有一个 JSON 数组数组,我尝试使用 CryptoJS 对其值进行加密,然后打印以在另一个文件中使用,其中应使用用户给定的密码解密这些值。 但是我做错了,在解密 URL 时,我收到“未捕获的错误:格式错误的 UTF-8 数据”。 加密.js: var encrypted = CryptoJS.AES.encrypt(item[key], pass); json[j] += encrypted.ciphertext.toString(CryptoJS.enc.Base64); 解密.js: var decrypted = CryptoJS.AES.decrypt(item[key], pass); html += '<a href="' + decrypted.toString(CryptoJS.enc.Utf8) + '" target="_blank" class="socialico ' + key + '">' + icons[key] + '</a>'; 我跟着这个例子...帮助,漂亮吗? 回答1 该错误消息通常意味着数据未正确解密,并且生成的纯文本字节不能形成有效的 UTF-8 字符。 需要检查的几件事: 首先,确保您使用相同的密码进行加密和解密。 您可能希望保留正确密码的哈希值,以便您可以在使用密码进行解密之前验证用户是否提供了正确的密码。 其次

2021-12-09 03:00:48    分类:技术分享    javascript   encryption   cryptojs

PKCS1-padding/RSA加密ios objc和java的区别(Difference between PKCS1-padding/RSA encryption ios objc and java)

问题 我正在为 ios 和 Android 开发应用程序。 我对加密任务比较陌生,在过去的 3 天里,我一直在用头撞墙,因为我无法运行 RSA 加密。 两个客户端都从 Java 服务器接收公钥。 在 android 中我有(显然,因为它与服务器端的代码几乎相同)没有问题,但 ios 部分似乎根本不兼容。 我想用公钥加密一小段数据(aes 密钥),这就是我在 Java 中的做法: try { String publickey = "MCwwDQYJKoZIhvcNAQEBBQADGwAwGAIRAK+dBpbOKw+1VKMWoFxjU6UCAwEAAQ=="; byte[] bArr = Crypto.base64Decode(publicKey, false); KeyFactory keyFactory = KeyFactory.getInstance("RSA", "BC"); EncodedKeySpec publicKeySpec = new X509EncodedKeySpec(publicKey); PublicKey publicKey = keyFactory.generatePublic(publicKeySpec); Cipher cipher = Cipher.getInstance("RSA/NONE/PKCS1Padding", "BC")

2021-12-09 02:53:52    分类:技术分享    java   android   ios   encryption   rsa

pki 与对称加密的性能差异是什么?(What is the performance difference of pki to symmetric encryption?)

问题 我们希望对我们的项目做一些严格的安全要求,我们需要做很多高性能的加密。 我想我知道 PKI 比对称加密要慢得多、复杂得多,但我找不到支持我的感觉的数字。 回答1 是的,纯非对称加密比对称密码(如 DES 或 AES)慢得多,这就是实际应用程序使用混合加密的原因:执行昂贵的公钥操作只是为了加密(和交换)对称算法的加密密钥将用于加密真实消息。 公钥密码术解决的问题是没有共享的秘密。 使用对称加密,您必须信任所有相关方来保密密钥。 这个问题应该比性能更令人担忧(可以通过混合方法缓解) 回答2 在运行 OS X 10.5.5 和 OpenSSL 的库存版本的 Macbook 上,“openssl speed”以每秒 46,000 个 1024 位块的速度为 AES-128-CBC 计时。 同一个盒子以每秒 169 个签名的速度为 1024 位 RSA 计时。 AES-128-CBC是“教科书”的块加密算法,RSA 1024是“教科书”的公钥算法。 这是苹果到橙子的问题,但答案是: RSA 慢得多。 然而,这不是您不应该使用公钥加密的原因。 真正的原因如下: 公钥加密操作不适用于原始数据加密。 Diffie-Hellman 和 RSA 等算法被设计为一种为块加密算法交换密钥的方式。 因此,例如,您将使用安全随机数生成器为 AES 生成 128 位随机密钥,并使用 RSA 加密这 16

2021-12-08 22:11:34    分类:技术分享    performance   encryption   encryption-symmetric   encryption-asymmetric

为什么同一个key的同一个字符串的AES加密密码总是不同的?(Why is AES encrypted cipher of the same string with the same key always different?)

问题 我有一个名为plain.txt 的文件。 在我的文件中: Hello Hello Hello Hello 我正在使用此命令对其进行加密: openssl enc -aes-128-cbc -salt -k "Hello" -in plain.txt -out encrypted.bin 然后我像这样打印加密值: buff = open("encrypted.bin") cipher = buff.read() buff.close() print b64encode(cipher) 但它总是不同的值。 密码不应该总是相同的吗? 我使用相同的文件和相同的密码对其进行加密。 这些是我的终端输出: Richard-Knops-MacBook-Pro:python_test richardknop$ openssl enc -aes-128-cbc -salt -k "Hello" -in plain.txt -out encrypted.bin Richard-Knops-MacBook-Pro:python_test richardknop$ python test.py U2FsdGVkX1+AmoQiIkYAxIYanLr/kbjMfEJPPLfeE/wtyxScvAKzb7K38ZxoI097 Richard-Knops-MacBook-Pro:python_test

2021-12-08 22:03:39    分类:技术分享    python   encryption   openssl   aes

反复加密(随机填充 + const int32) - 妥协的秘密?(Repeatedly encrypt(random padding + const int32) - compromise secret?)

问题 任何加密方案都可以安全地允许我重复加密相同的整数,每次都预先准备不同的随机材料吗? 这似乎是一种可能会让我陷入困境的手术。 我想防止在我的 Web 应用程序中抓取项目,但仍然具有持久的项目 ID/URL,因此内容链接不会随着时间的推移而过期。 我对此的安全要求并不高,但我宁愿不做一些明显破坏机密的完全愚蠢的事情。 // performed on each ID before transmitting item search results to the client public int64 encryptWithRandomPadding(int32 id) { int32 randomPadding = getNextRandomInt32(); return encrypt(((int64)randomPadding << 32) + id), SECRET); } // performed on an encrypted/padded ID for which the client requests details public int32 decryptAndRemoveRandomPadding(int64 idToDecrypt) { int64 idWithPadding = decrypt(idToDecrypt, SECRET); return

2021-12-08 21:43:43    分类:技术分享    encryption   cryptography

在 Android 上使用 Rijndael 和密钥 256 位加密/解密(Encryption / Decryption using Rijndael with key 256bit on Android)

问题 我正在开发一个使用 WS 的 Android 应用程序。 android应用程序和WebService之间的信息交换,必须使用256位密钥的加密/解密算法Rijndael。 也就是说,从 WS 返回的所有信息都将被加密,因此我使用该算法对其进行解密。 同样,我发送给 WS 的所有信息都应该加密。 因此,我将使用加密算法。 我还没有发现 Rijndael 可以在 android 平台上使用。 但是我在 C# 中有相同的算法。 public class KeydKey { public KeydKey() { } #region Metodos de Criptografia #region key public string key(string vstrTextToBeEncrypted, string vstrEncryptionKey) { byte[] bytValue; byte[] bytKey; byte[] bytEncoded; byte[] bytIV = { 121, 241, 10, 1, 132, 74, 11, 39, 255, 91, 45, 78, 14, 211, 22, 62 }; int intLength; int intRemaining; MemoryStream objMemoryStream = new MemoryStream(

2021-12-08 21:14:35    分类:技术分享    android   web-services   encryption   rijndael

RijndaelManaged 无法解密(RijndaelManaged can not decrypt)

问题 可以在以下位置找到代码:http://pastebin.com/3Yg5bHra 我的问题是,当我解密时,根本没有返回任何内容。 什么都不会被解密。 它在第 111-114 行附近出错。 即使我将数据放入内存流 (msDecrypt),cryptoStream (csDecrypt) 也是空的 编辑Nudier提出了一个解决方案 回答1 //Function for encrypting propose static string SymmetricEncryption(string str, byte[] key, byte[] IV) { MemoryStream ms = new MemoryStream(); try { //---creates a new instance of the RijndaelManaged class--- RijndaelManaged RMCrypto = new RijndaelManaged(); //---creates a new instance of the CryptoStream class--- CryptoStream cryptStream =new CryptoStream(ms, RMCrypto.CreateEncryptor(key, IV), CryptoStreamMode.Write)

2021-12-08 20:22:54    分类:技术分享    c#   .net   security   encryption   rijndaelmanaged

Ruby:使用私钥/公钥进行文件加密/解密(Ruby: file encryption/decryption with private/public keys)

问题 我正在寻找一种满足以下要求的文件加密/解密算法: 算法必须可靠对于相当大的文件,算法应该很快私钥可以通过一些参数(例如密码)生成生成的私钥必须与公钥兼容(公钥只生成一次并存储在数据库中) 是否有建议算法的 Ruby 实现? 回答1 注意:正如 emboss 在评论中提到的,这个答案不适合实际系统。 首先,不应该使用这种方法进行文件加密(例如,lib 提供了 AES。)。 其次,这个答案没有解决任何更广泛的问题,这些问题也会影响您设计解决方案的方式。 原始来源也有更多细节。 Ruby 可以使用 openssl 来做到这一点: #!/usr/bin/env ruby # ENCRYPT require 'openssl' require 'base64' public_key_file = 'public.pem'; string = 'Hello World!'; public_key = OpenSSL::PKey::RSA.new(File.read(public_key_file)) encrypted_string = Base64.encode64(public_key.public_encrypt(string)) 并解密: #!/usr/bin/env ruby # DECRYPT require 'openssl' require 'base64'

2021-12-08 19:49:04    分类:技术分享    ruby-on-rails   ruby   encryption   public-key-encryption   encryption-asymmetric

在 C# 中解密使用 RSA 在 iPhone 上加密的东西时遇到问题(Having trouble decrypting in C# something encrypted on iPhone using RSA)

问题 到目前为止,我已经在这方面花费了两天时间,并梳理了我可以使用的所有来源,所以这是最后的手段。 我有一个 X509 证书,其公钥已存储在 iPhone 的钥匙串中(此时仅模拟器)。 在 ASP.NET 方面,我在证书库中获得了带有私钥的证书。 当我在 iPhone 上加密一个字符串并在服务器上解密它时,我得到一个CryptographicException “Bad data”。 我试过Array.Reverse在跳槽中的RSACryptoServiceProvider页面上提示,但它并没有帮助。 我比较了两边的 base-64 字符串,它们是相等的。 我在解码后比较了原始字节数组,它们也相等。 如果我使用公钥在服务器上加密,则字节数组与 iPhone 的版本不同,并且可以使用私钥轻松解密。 原始纯文本字符串是 115 个字符,因此它在我的 2048 位密钥的 256 字节限制内。 这是 iPhone 加密方法(几乎是来自 CryptoExercise 示例应用程序的wrapSymmetricKey方法的逐字记录): + (NSData *)encrypt:(NSString *)plainText usingKey:(SecKeyRef)key error:(NSError **)err { size_t cipherBufferSize =

2021-12-08 18:41:51    分类:技术分享    c#   iphone   rsa   encryption