Android使用SQLite数据库来存储数据,我需要加密SQLite数据库,怎么做呢?我知道应用程序数据是私有的.但是,我需要明确加密我的应用程序正在使用的SQLite数据库.
在数据库中存储密码的首选方法/数据类型是什么(最好是SQL Server 2005).我在几个应用程序中一直使用的方法是首先使用.NET加密库,然后将它们作为二进制文件存储在数据库中(16).这是首选方法还是我应该使用不同的数据类型或分配比16更多的空间?
我正在研究加密MD5,我在谷歌找到了这个代码
public string CalculateMD5Hash(string input)
{
// Primeiro passo, calcular o MD5 hash a partir da string
MD5 md5 = System.Security.Cryptography.MD5.Create();
byte[] inputBytes = System.Text.Encoding.ASCII.GetBytes(input);
byte[] hash = md5.ComputeHash(inputBytes);
// Segundo passo, converter o array de bytes em uma string haxadecimal
StringBuilder sb = new StringBuilder();
for (int i = 0; i < hash.Length; i++)
{
sb.Append(hash[i].ToString("X2"));
}
return sb.ToString();
}
Run Code Online (Sandbox Code Playgroud)
但为什么它使用ToString("X2")?ToString正常有什么区别?
对于Web应用程序,当HTTPS不可用作安全措施时,是否仍然可以使登录有点安全?例如:
特别是我正在使用CakePHP和AJAX POST调用来触发身份验证(包括提供的用户名和密码).
问题更新:
我需要压缩和密码保护文件.有一个好的(免费)图书馆吗?
这需要由第三方打开,因此密码保护需要使用标准工具.
我正在寻找创建一个与REST Web服务通信的iPhone应用程序.因为会传输一些用户敏感数据(名称,地址,年龄等),所以我正在考虑保护与SSL的连接.
然而,在我之前对App Store提交的越狱中,我看到我问的第一个问题是"你的应用程序是否使用加密?" 根据对此问题和其他后续问题的回答,可能需要美国出口合规.
我的公司不在美国,我们也没有美国办事处.
是否有其他人使用SSL提交了一个应用程序用于此类目的?如果是这样,您是否需要做任何事情才能获得使用它的许可,无论是来自Apple还是来自美国政府?
我正在编写一个小的Python脚本,它将使用用户名和密码组合定期从第三方服务中提取信息.我不需要创建100%防弹的东西(100%甚至存在吗?),但我想要涉及一个很好的安全措施,所以至少需要很长时间才能打破它.
这个脚本没有GUI,并且会定期运行cron,因此每次运行密码时输入密码都不会真正起作用,我必须将用户名和密码存储在加密文件中或加密在SQLite数据库中,这将是更好的,因为我将使用SQLite,我可能需要在某些时候编辑密码.另外,我可能会将整个程序包装在EXE中,因为此时它专门用于Windows.
如何安全地存储用户名和密码组合,以便通过cron作业定期使用?
我正在尝试使用JDK 1.6在Android 2.3.1中使用库DigestUtils,但是在执行应用程序时出现以下错误:
Could not find method org.apache.commons.codec.binary.Hex.encodeHexString, referenced from method org.apache.commons.codec.digest.DigestUtils.shaHex
在这里你有堆栈跟踪:
02-03 10:25:45.153: I/dalvikvm(1230): Could not find method org.apache.commons.codec.binary.Hex.encodeHexString, referenced from method org.apache.commons.codec.digest.DigestUtils.shaHex
02-03 10:25:45.153: W/dalvikvm(1230): VFY: unable to resolve static method 329: Lorg/apache/commons/codec/binary/Hex;.encodeHexString ([B)Ljava/lang/String;
02-03 10:25:45.153: D/dalvikvm(1230): VFY: replacing opcode 0x71 at 0x0004
02-03 10:25:45.153: D/dalvikvm(1230): VFY: dead code 0x0007-0008 in Lorg/apache/commons/codec/digest/DigestUtils;.shaHex ([B)Ljava/lang/String;
02-03 10:25:45.163: D/AndroidRuntime(1230): Shutting down VM
02-03 10:25:45.163: W/dalvikvm(1230): threadid=1: thread exiting with uncaught exception (group=0x40015560)
02-03 10:25:45.173: E/AndroidRuntime(1230): FATAL EXCEPTION: main …Run Code Online (Sandbox Code Playgroud) 据我了解,生成盐的最佳做法是使用源代码中存储的一些神秘公式(甚至魔术常量).
我正在研究一个我们打算作为开源发布的项目,但问题是源代码是生成盐的秘密公式,因此能够在我们的网站上运行彩虹表攻击.
我认为很多人在我面前都考虑过这个问题,我想知道最佳做法是什么.在我看来,如果代码是开源的话,根本就没有盐,因为盐可以很容易地进行逆向工程.
思考?
我正在使用CryptEncryptMessage生成PKCS#7包络消息.我szOID_NIST_AES256_CBC用作加密算法.
生成的消息似乎是有效的,但是RSAES-OAEP密钥传输算法在野外具有有限的支持(Thunderbird,OpenSSL SMIME模块和许多其他人不支持它).
我希望CAPI能够恢复到旧版RSAencryption的密钥传输.
有没有可能的方法,如果有一种方法而不是使用我可以恢复到低级消息传递功能,CryptEncryptMessage但即使使用低级函数我也找不到办法.
码:
CRYPT_ENCRYPT_MESSAGE_PARA EncryptMessageParams;
EncryptMessageParams.cbSize = sizeof(CMSG_ENVELOPED_ENCODE_INFO);
EncryptMessageParams.dwMsgEncodingType = PKCS_7_ASN_ENCODING;
EncryptMessageParams.ContentEncryptionAlgorithm.pszObjId = szOID_NIST_AES256_CBC;
EncryptMessageParams.ContentEncryptionAlgorithm.Parameters.cbData = 0;
EncryptMessageParams.ContentEncryptionAlgorithm.Parameters.pbData = 0;
EncryptMessageParams.hCryptProv = NULL;
EncryptMessageParams.pvEncryptionAuxInfo = NULL;
EncryptMessageParams.dwFlags = 0;
EncryptMessageParams.dwInnerContentType = 0;
BYTE pbEncryptedBlob[640000];
DWORD pcbEncryptedBlob = 640000;
BOOL retval = CryptEncryptMessage(&EncryptMessageParams, cRecipientCert, pRecipCertContextArray, pbMsgText, dwMsgTextSize, pbEncryptedBlob, &pcbEncryptedBlob);
Run Code Online (Sandbox Code Playgroud)