加密密钥轮换到底是如何工作的?我知道出于安全目的不断轮换加密密钥是一个非常好的做法,但轮换密钥需要太多工作。
案件:
假设我有一个存储 30GB 数据的数据库,我们使用内部密钥来加密静态数据,并且我计划每月轮换我的密钥。
问题:
其他详情:
security encryption encryption-symmetric amazon-web-services amazon-kms
我正在尝试在C#中加密一些(cookie)数据,然后在PHP中解密它.我选择使用Rijndael加密.我几乎让它工作,除了只有部分文本被解密!我从这个例子开始工作:用C#解密PHP加密字符串
这是我正在加密的文本(JSON)(删除了敏感信息):
{"DisplayName":"xxx", "Username": "yyy", "EmailAddress":"zzz"}
Run Code Online (Sandbox Code Playgroud)
所以我登录到C#app,它从存储的Key和IV创建/编码cookie,然后重定向到应该解密/读取cookie的PHP应用程序.当我解密cookie时,它出现如下:
{"DisplayName":"xxx","F?A ;??HP=D???????4??z????????k?#E???R?j?5?\?t. t?D??"
Run Code Online (Sandbox Code Playgroud)
更新:我已经进一步了,这就是结果
string(96) "{"DisplayName":"xxx","Username":"yyy","EmailAddress"?)???-?J??k/VV-v? ?9?B`7^"
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,它开始解密它,但后来搞砸了......
当解密字符串时它出来是正确的(使用填充,我有一个删除填充的函数),但如果我将测试字符串改为一个字符,我会再次得到垃圾:
B?nHL?Ek ?¿??U?lO????O??M??NO/?f.M???L??CC?Y>F??~?qd?+
Run Code Online (Sandbox Code Playgroud)
这是我用来生成随机密钥和IV的c#代码:
更新:我现在只使用静态键/ IV,它们是:
Key: lkirwf897+22#bbtrm8814z5qq=498j5
IV: 741952hheeyy66#cs!9hjv887mxx7@8y
Run Code Online (Sandbox Code Playgroud)
RijndaelManaged symmetricKey = new RijndaelManaged();
symmetricKey.BlockSize = 256;
symmetricKey.KeySize = 256;
symmetricKey.Padding = PaddingMode.Zeros;
symmetricKey.Mode = CipherMode.CBC;
string key = Convert.ToBase64String(symmetricKey.Key);
string IV = Convert.ToBase64String(symmetricKey.IV);
Run Code Online (Sandbox Code Playgroud)
然后,我将密钥和IV保存到数据库中,以便稍后检索以进行编码/解码.
这是完整的加密类:
public static class Encryption
{
public static string Encrypt(string prm_text_to_encrypt, string prm_key, string prm_iv)
{
var sToEncrypt = prm_text_to_encrypt;
var rj = new RijndaelManaged()
{ …Run Code Online (Sandbox Code Playgroud) 我刚开始实施加密技术,而且我还在学习基础知识.
我的开源代码库需要对称加密功能.该系统有三个组件:
看看各种JavaScript库,我遇到了SJCL,它有一个可爱的演示页面:http://bitwiseshiftleft.github.com/sjcl/demo/
从这一点来看,为了解密密文,客户需要知道的(除了使用的密码之外)是:
用密文保存所有这些数据是否相对安全?请记住,这是一个开源代码库,除非我要求用户记住它们,否则我无法合理地隐藏这些变量(是的,正确).
任何建议表示赞赏
encryption passwords password-protection encryption-symmetric
我有一个用C#设计的应用程序.简单来说,应用程序将数据和图像发送到我的Web服务器,该服务器获取所有$ _POST数据并对其进行处理.我会承认我不明白事情的安全性如何发挥作用.我将聘请具有相关经验的人来做这件事但是我甚至不知道在这一点上要问他们什么是一些可接受的技术.
我认为它不像base64编码/解码数据那么简单,它需要更高级别的加密.网络服务器将在接下来的几周内获得HTTPS SSL(OV)认证,但我有限的理解是,在将数据从用户PC传输到我的网络服务器时仍然需要某种保护/加密,所以有人不会在数据传输或类似的东西.
简单来说,如果我想在用户和我的网络服务器之间保持数据安全,那么C#到PHP的一些最常见或可接受的方法是什么?
数据直接从用户PC上的应用程序发送到我的服务器,我控制两者的源代码,但我自己而不是开发人员,因此我缺乏关于该问题的技术知识.
一位C#开发人员与建议的对称/非对称算法进行了交谈,但他不是PHP开发人员,因此他不知道php是否可以获取该数据并对其进行解密.
据我所知,通过SSL,浏览器获取安全网站的公钥,并通过公钥加密rsa算法,这两个建立会话密钥,然后通过一些对称算法继续通信,因为对称密钥加密/解密更快.SSL使用哪种对称密钥算法?DES?AES?或者是其他东西?
ssl cryptography rsa public-key-encryption encryption-symmetric
我希望使用对称密钥应用SQL列级加密.创建数据库主密钥,证书和对称密钥所需的初始步骤似乎很简单,我已成功使用对称密钥测试加密/解密数据.
但是,一旦数据被加密,我不知道如何最好地查询它.例如
SELECT PlainTextA, PlainTextB, PlainTextC
WHERE CONVERT(varchar, DECRYPTBYKEY(EncyptedColumn)) = @SearchTerm
Run Code Online (Sandbox Code Playgroud)
肯定会导致全表扫描?
我认为可能有用的另一种选择是首先加密搜索条件,例如
SELECT PlainTextA, PlainTextB, PlainTextC
WHERE EncyptedColumn = ENCRYPTBYKEY(KEY_GUID('KeyName'), @SearchTerm)
Run Code Online (Sandbox Code Playgroud)
但这不起作用,因为生成的加密值总是不同的.
任何建议将不胜感激.
我们希望对我们的项目做一些严格的安全性要求,我们需要进行大量高性能的加密.
我认为我知道PKI比对称加密慢得多且复杂得多,但我找不到数字来支持我的感受.
encryption performance encryption-asymmetric encryption-symmetric
我写了这段代码C#用密钥加密字符串:
private static int Bin2Dec(string num)
{
int _num = 0;
for (int i = 0; i < num.Length; i++)
_num += (int)Math.Pow(2, num.Length - i - 1) * int.Parse(num[i].ToString());
return _num;
}
private static string Dec2Bin(int num)
{
if (num < 2) return num.ToString();
return Dec2Bin(num / 2) + (num % 2).ToString();
}
public static string StrXor(string str, string key)
{
string _str = "";
string _key = "";
string _xorStr = "";
string _temp = ""; …Run Code Online (Sandbox Code Playgroud) 我正在使用AES加密/解密类,它需要一个键值和向量值来加密和解密MVC3应用程序中的数据.
在保存记录时,我正在加密数据,然后存储在数据库中.当我检索记录时,我在控制器中解密并将未加密的值传递给视图.
关注的问题不是在数据穿越网络时保护数据,而是在数据库被泄露时保护数据库.
我读了很多帖子,说不要在你的代码中加密密钥.
好的,他们应该留在哪里?文件系统?另一个数据库
寻找一些方向.
当我尝试使用CI加密库加密字符串时,返回的字符串非常大,大约178个字符长.是否有任何方法可以减少字符串的长度.默认密码是:AES-128.
假设:$data=$this->encryption->encrypt("welcome to ooty");
它返回178长度的字符串值..我需要它减少到20以下
更新:当我加密一个数字时,比如6,它返回178个长字符串.
php encryption cryptography codeigniter encryption-symmetric
encryption ×7
c# ×3
php ×3
cryptography ×2
aes ×1
amazon-kms ×1
asp.net ×1
codeigniter ×1
cookies ×1
passwords ×1
performance ×1
rsa ×1
security ×1
sql-server ×1
ssl ×1