我需要一些简单的字符串加密,所以我写了下面的代码(从这里有很多"灵感" ):
// create and initialize a crypto algorithm
private static SymmetricAlgorithm getAlgorithm(string password) {
SymmetricAlgorithm algorithm = Rijndael.Create();
Rfc2898DeriveBytes rdb = new Rfc2898DeriveBytes(
password, new byte[] {
0x53,0x6f,0x64,0x69,0x75,0x6d,0x20, // salty goodness
0x43,0x68,0x6c,0x6f,0x72,0x69,0x64,0x65
}
);
algorithm.Padding = PaddingMode.ISO10126;
algorithm.Key = rdb.GetBytes(32);
algorithm.IV = rdb.GetBytes(16);
return algorithm;
}
/*
* encryptString
* provides simple encryption of a string, with a given password
*/
public static string encryptString(string clearText, string password) {
SymmetricAlgorithm algorithm = getAlgorithm(password);
byte[] clearBytes = System.Text.Encoding.Unicode.GetBytes(clearText); …Run Code Online (Sandbox Code Playgroud) 我理解IV的目的.特别是在CBC模式下,这确保了使用相同密钥加密的2条消息中的第一条块将永远不会相同.但是,如果IV是连续的,为什么它是一个漏洞呢?根据CWE-329 NON-Random IV允许字典攻击的可能性.我知道在实践中像WEP这样的协议不会隐藏IV.如果攻击者拥有IV和密文短信,那么这就打开了对密钥进行字典攻击的大门.我不知道随机iv如何改变这一点.(我知道对wep的攻击比这更复杂.)
随机静脉注射有什么安全优势?这仍然是"理想分组密码"的问题吗?(一种完全安全的分组密码,没有可能的弱点.)
ASP.NET 4
我在我的Web场上的web.config中对连接字符串使用了RSA密钥加密.但是,还有一个我要加密的自定义密码条目.如何使用RSA密钥对其进行加密,而不对其余配置进行加密.请指教,谢谢.
例:
<appSettings>
...
<add key="Host" value="www.foo.com" />
<add key="Token" value="qwerqwre" />
<add key="AccountId" value="123" />
<add key="DepartmentId" value="456" />
<add key="Password" value="asdfasdf" />
<add key="SessionEmail" value="foo@foo.com" />
<add key="DefaultFolder" value="789" />
</appSettings>
Run Code Online (Sandbox Code Playgroud) 我是PHP新手,这也是我的第一个登录系统,所以如果你们可以查看我的代码,看看你是否能发现任何安全漏洞,那将是很棒的:
注意:虽然此处未显示,但我正在清理所有用户输入.
第1步:我获取用户选择的密码并通过此功能运行它:
encrypt($user_chosen_password, $salt);
function encrypt($plain_text, $salt) {
if(!$salt) {
$salt = uniqid(rand(0, 1000000));
}
return array(
'hash' => $salt.hash('sha512', $salt.$plain_text),
'salt' => $salt
);
}
Run Code Online (Sandbox Code Playgroud)
第2步:然后我将哈希和salt($password['hash']和$password['salt'])存储在数据库的users表中:
id | username | password | salt | unrelated info...
-----------------------------------------------------------
1 | bobby | 809a28377 | 809a28377f | ...
fd131e5934
180dc24e15
bbe5f8be77
371623ce36
4d5b851e46
Run Code Online (Sandbox Code Playgroud)
步骤1:我获取用户输入的用户名并查看数据库以查看是否返回了任何行.在我的网站上,没有2个用户可以共享相同的用户名,因此用户名字段始终具有唯一值.如果我返回1行,我会抓住该用户的盐.
步骤2:然后我通过加密功能运行用户输入的密码(如上所述),但这次我还提供从数据库检索到的盐:
encrypt($user_entered_password, $salt);
Run Code Online (Sandbox Code Playgroud)
第3步:我现在有一个正确的密码来匹配这个变量:$password['hash'].所以我在数据库上进行第二次查找,看看输入的用户名和散列密码是否一起返回一行.如果是,那么用户的凭证是正确的.
步骤4:为了在用户凭证通过后记录用户,我生成一个随机唯一字符串并对其进行哈希处理:
$random_string = uniqid(rand(0, 1000000));
$session_key = hash('sha512', …Run Code Online (Sandbox Code Playgroud) 我们都知道当你无法开源并自由分发软件的情况时 - 我处于其中一种情况.
我有一个应用程序,包含许多二进制文件(从C源代码编译)和python代码,它将所有二进制文件包装到一个系统中.此应用程序曾用作云解决方案,因此用户可以通过网络访问应用程序功能,但无法触摸存储二进制文件和代码的实际服务器.
现在我们想要提供我们系统的"本地"版本.该应用程序将在我们的用户将拥有的PC上运行.我们知道一切都可能被打破,但至少要保护应用程序尽可能保护可能的复制和逆向工程.
我知道docker是一个很棒的部署工具,所以我想知道:有可能创建加密的docker容器,没有人能看到容器文件系统中存储的任何数据吗?这个问题有一个已知的解决方案吗?
另外,也许有一些众所周知的解决方案不是基于docker的?
我很难找到在Android设备上加密我的sqlite数据库的可能性,但我找不到令人满意的解决方案.
我需要像libary这样的东西来引用,以便在使用正常的sqlite函数时对我的数据库进行"动态"加密/解密.
我不希望在存储之前加密数据.
我不想加密整个数据库文件,以便在使用之前解密它.
我知道以下项目:
但我找不到任何有关此事的实例.
顺便说一句,我绝对愿意购买商业版本,但我必须在花费几百美元之前测试它.
有没有人为他自己解决这个问题?
编辑:问题由commonsWare解决,如果您按照他的链接:
SQLCypher端口到Android
您将能够下载必要的文件,并且必须将它们添加到您的项目.这可能如下所示:

我想了解RSA令牌(SecurID)是如何工作的,那里使用的算法是什么,它是否与常规RSA加密/解密算法相同?
我正在使用Objective-C中的一个简单应用程序RSA Algorithm.我想在服务器/客户端通信上使用它.我需要iOS/iPhone中的RSA算法实现方面的帮助.
CommonCryptor.h.长话短说,我们公司最近有一个入侵,我们的MySQL数据库被丢弃和被盗.高管们现在非常紧张,除了提高其他安全措施外,他们还打算加密数据库中的所有客户信息(电子邮件地址,家庭住址,姓名等).
我不确定从哪里开始.我们运行PHP应用程序.显然,这会产生一些我们想要最小化的额外开销.另一个问题是在使用新加密字段的任何地方都难以更改代码.
这对我来说是一种不必要的预防措施,但管理层似乎坚定不移.
什么类型的加密算法/方法最适合此用例?
encryption ×10
security ×4
cryptography ×3
php ×2
rsa ×2
.net ×1
access-token ×1
algorithm ×1
android ×1
asp.net ×1
c# ×1
docker ×1
exception ×1
ios ×1
iphone ×1
login ×1
mysql ×1
objective-c ×1
python ×1
sqlite ×1
web-config ×1