通过阅读各种材料,无论我理解什么,公钥 - 私钥对都是不对称加密的基础,也是选择2个素数(大致是你的私钥)并乘以它们(大致是你的公钥)的东西,我如果您知道私钥,则可能会生成公钥.这是正确的还是我错了什么?
[编辑]
让我更加困惑的是,只能使用私钥(使用.NET类RSACryptoServiceProvider)将RSA密钥序列化为XML .不确定这个限制是否有意!
使用标准JDK在Java中生成安全随机AES密钥的推荐方法是什么?
在其他帖子中,我发现了这一点,但使用a SecretKeyFactory可能是一个更好的主意:
KeyGenerator keyGen = KeyGenerator.getInstance("AES");
SecureRandom random = new SecureRandom(); // cryptograph. secure random
keyGen.init(random);
SecretKey secretKey = keyGen.generateKey();
Run Code Online (Sandbox Code Playgroud)
如果答案包括解释为什么它是生成随机密钥的好方法,那将是很好的.谢谢!
我是python编程的新手,我有点困惑.我尝试从字符串中获取字节以进行哈希和加密,但我得到了
b'...'
Run Code Online (Sandbox Code Playgroud)
b字符串前面的字符就像下面的例子一样.有没有办法避免这种情况?.任何人都可以提供解决方案吗?对不起这个愚蠢的问题
import hashlib
text = "my secret data"
pw_bytes = text.encode('utf-8')
print('print',pw_bytes)
m = hashlib.md5()
m.update(pw_bytes)
Run Code Online (Sandbox Code Playgroud)
OUTPUT:
print b'my secret data'
Run Code Online (Sandbox Code Playgroud) 调用以下函数时:
byte[] bytes = rsa.Encrypt(System.Text.UTF8Encoding.UTF8.GetBytes(stringToEncrypt), true);
Run Code Online (Sandbox Code Playgroud)
我现在得到错误:长度不好.
使用较小的字符串可以工作,任何想法问题可能是我传递的字符串不到200个字符.
关于这个主题有很多问题,同样的解决方案,但这对我不起作用.我有一个加密的简单测试.加密/解密本身是有效的(只要我使用字节数组本身而不是字符串处理此测试).问题是不希望将它作为字节数组处理,而是作为String处理,但是当我将字节数组编码为字符串并返回时,生成的字节数组与原始字节数组不同,因此解密不再起作用.我在相应的字符串方法中尝试了以下参数:UTF-8,UTF8,UTF-16,UTF8.他们都没有工作.生成的字节数组与原始数组不同.任何想法为什么会这样?
加密:
public class NewEncrypter
{
private String algorithm = "DESede";
private Key key = null;
private Cipher cipher = null;
public NewEncrypter() throws NoSuchAlgorithmException, NoSuchPaddingException
{
key = KeyGenerator.getInstance(algorithm).generateKey();
cipher = Cipher.getInstance(algorithm);
}
public byte[] encrypt(String input) throws Exception
{
cipher.init(Cipher.ENCRYPT_MODE, key);
byte[] inputBytes = input.getBytes("UTF-16");
return cipher.doFinal(inputBytes);
}
public String decrypt(byte[] encryptionBytes) throws Exception
{
cipher.init(Cipher.DECRYPT_MODE, key);
byte[] recoveredBytes = cipher.doFinal(encryptionBytes);
String recovered = new String(recoveredBytes, "UTF-16");
return recovered;
}
}
Run Code Online (Sandbox Code Playgroud)
这是我尝试的测试:
public class NewEncrypterTest
{
@Test
public …Run Code Online (Sandbox Code Playgroud) 是否可以隐藏/编码/加密php文件/源代码,让其他人安装系统并在其计算机上运行?
考虑到在将存档推送到场外备份位置之前使用GPG和OpenSSL进行本地加密之间的选择,每种解决方案的优点和缺点是什么?
背景:我目前正在管理基于Ubuntu 14.04.1的服务器基础架构,并且在可用时应用所有当前补丁.
所有这些系统都是无头的,使用经过审查的预制和自动化工具自动构建,并通过基于Intel的统一硬件上的KVM在虚拟机中运行.
我们偏爱Ruby,但更倾向于"正确地做事".由于两者兼而有之,我们选择"备份"gem作为创建我们想要保留的数据的加密存档的手段,因为它将为使用Vagrant的开发人员创建相同的加密存档,无论其机制如何,它传播了.
所有软件和配置都通过Puppet进行管理,因此这两项决定都不会对"用户体验"或方便性产生任何影响.这两个选项都将创建相关脚本,以便从创建的任何备份中进行管理,验证或还原.
鉴于此,当用于此目的时,任一加密选项是否对另一个提供任何优势?
由于这个问题相当受欢迎,我认为给它更新很有用.
让我强调AviD给出的正确答案:
您不应该在cookie中存储任何需要加密的数据.相反,在cookie中存储一个大小合适的(128位/ 16字节)随机密钥,并将您想要保密的信息存储在服务器上,由cookie的密钥标识.
我正在寻找有关加密cookie的"最佳"加密算法的信息.
我有以下要求:
必须快速
加密和解密数据(几乎)每个请求都要完成
它将在小数据集上运行,通常是大约100个字符或更少的字符串
它必须是安全的,但它不像我们正在保证银行交易
我们需要能够解密信息,以便SHA1等出来.
现在我已经读过Blowfish快速而安全,我读过AES快速而安全.Blowfish的块大小较小.
我认为这两种算法都提供了足够的安全性?所以速度将成为决定性因素.但我真的不知道这些算法是否适合小字符串,以及是否有更适合加密cookie的算法.
所以我的问题是:
什么加密算法最适合加密cookie数据?
更新
更准确地说,我们要加密2个cookie:一个包含会话信息,另一个包含"记住我"信息.
该平台是PHP上作为VPS上的Linux上的apache模块.
更新2
我同意cletus,将任何信息存储在cookie中是不安全的.
但是,我们需要实现"记住我"功能.可接受的方法是设置cookie.如果客户端提供此cookie,则允许他或她以(几乎)相同的权限访问系统,就像他/她提供有效的用户名密码组合一样.
因此,我们至少要加密cookie中的所有数据,以便:
a)恶意用户无法读取其内容;
b)恶意用户无法制作自己的cookie或篡改它.
(在我们对它做任何事情之前,对所有来自cookie的数据进行消毒并检查其有效性,但这是另一个故事)
会话cookie不再包含sessionId/timestamp.它可以在没有加密的情况下使用,但我认为加密它没什么害处?(计算时间除外).
因此,鉴于我们必须在cookie中存储一些数据,加密它的最佳方法是什么?
更新3
对此问题的回答使我重新考虑所选择的方法.我确实可以做同样的事情而不需要加密.我不应该加密数据,而应该只发送没有上下文而无法猜到的数据.
然而,我也不知所措:
我认为加密使我们能够将数据发送到BigBadWorld™,并且仍然(相当)确定没有人可以阅读或篡改它......
不是全部加密点?
但下面的反应推动:不要相信加密来实现安全性.
我错过了什么?
我在这里回答了一个问题,如何隐藏我的http请求调用并使它们在我的应用程序中更安全.我不希望人们使用fiddler 2来查看呼叫并设置自动应答器.每个人都告诉我去SSL,呼叫将被隐藏,信息保持安全.
我购买并安装了SSL证书并完成了所有设置.我启动了fiddler 2并运行了一个测试应用程序,该应用程序连接到https Web服务以及连接到https php脚本.
Fiddler 2不仅能够检测到这两个请求,还能解密它们!我能够看到所有信息都返回到第四位,这让我想到了我的问题.
如果SSL与安全性无关,那么拥有SSL有什么意义呢?无论有没有SSL,我都可以看到所有信息都返回第四,而STILL则设置了自动应答器.
在.NET中有什么东西我错过了更好地隐藏我的通过SSL的呼叫?
编辑
由于我收到的一些回复,我在这个问题中添加了一个新的部分.如果应用程序连接到Web服务以进行登录,该怎么办?该应用程序向Web服务发送用户名和密码.然后,Web服务将数据发送回应用程序,说明登录数据良好或不良.即使通过SSL,使用fiddler 2的人也可以设置一个自动应答器,然后应用程序被"破解".我理解在调试中看到数据是多么有用,但我的问题是究竟应该做些什么来确保SSL连接到它请求的那个.基本上说不可能有一个中间人.
在Mac/Linux上压缩/解压缩受密码保护的zip文件,我使用:Zip:
zip -P password -r encrypted.zip folderIWantToZip
Run Code Online (Sandbox Code Playgroud)
解压缩:
unzip -P password encrypted.zip
Run Code Online (Sandbox Code Playgroud)
在命令行上Windows上的等效命令是什么(假设已经安装了7zip)?
我一直在做研究,发现使用Java zip4j库密码加密是不可能的.Windows也没有像Mac/Linux这样的zip命令提示符
encryption ×10
c# ×2
java ×2
php ×2
string ×2
.net ×1
.net-4.0 ×1
7zip ×1
aes ×1
binary ×1
bytearray ×1
command-line ×1
cookies ×1
cryptography ×1
fiddler ×1
gnupg ×1
jce ×1
obfuscation ×1
puppet ×1
python ×1
remember-me ×1
rsa ×1
ruby ×1
security ×1
ssl ×1
ubuntu-14.04 ×1
windows ×1
zip ×1