我有一个程序从配置文件中读取服务器信息,并希望加密该配置中的密码,该密码可由我的程序读取并解密.
质量要求:
关于我将如何做到这一点的任何建议?我正在考虑编写自己的算法,但我觉得它会非常不安全.
我正在尝试使用keytool和openssl应用程序将Java密钥库文件转换为PEM文件.但我找不到转换的好方法.有任何想法吗?
我没有将密钥库直接转换为PEM,而是首先尝试创建PKCS12文件,然后转换为相关的PEM文件和密钥库.但我无法使用它们建立连接.(请注意,我只需要一个PEM文件和一个Keystore文件来实现安全连接.没有像"从一个java密钥库文件开始"这样的限制.:)所以从我的情况可以接受从其他格式开始
但是从jks到pem的直接转换方法是优选的.
任何人都可以指出我正确的方向,能够加密一个字符串,返回另一个字符串与加密数据?(我一直在尝试使用AES256加密.)我想编写一个方法,它接受两个NSString实例,一个是要加密的消息,另一个是加密它的'密码' - 我怀疑我必须生成具有密码的加密密钥,如果密码随加密数据一起提供,则可以反转.然后,该方法应返回从加密数据创建的NSString.
我已经尝试过这篇文章的第一篇评论中详述的技术,但到目前为止我还没有运气.Apple的CryptoExercise肯定有一些东西,但我无法理解它......我已经看到很多对CCCrypt的引用,但是在我使用它的每种情况下它都失败了.
我还必须能够解密加密的字符串,但我希望它像kCCEncrypt/kCCDecrypt一样简单.
我只是学习使用SQLite,如果可能的话,我很好奇:
加密数据库文件?
密码保护数据库的开放?
PS.我知道有这个"SQLite加密扩展(SEE).",但根据文档,"SEE是许可软件...."和"SEE的永久源代码许可证的成本是2000美元."
它们似乎都是需要公钥和私钥的加密算法.为什么我会选择一个与另一个在我的客户端服务器应用程序中提供加密?
如果在登录屏幕上用户使用其用户名和密码提交表单,则密码将以纯文本形式发送(即使使用POST,如果我错了也请更正).
那么问题是,保护用户及其密码的正确方法是针对可能正在窃听通信数据的第三方?
我知道HTTPS是问题的解决方案,但有没有办法确保使用标准HTTP协议(POST请求)至少某种程度的安全性?(也许以某种方式使用javascript)
编辑 我可能遗漏了一些重要的事情.
我的目的是一个页面 - 这是PHP生成的登录页面,当然,它作为HTML文件在HTTP GET请求中发送给用户.服务器和客户端之间没有建立(@Jeremy Powel)连接,所以我无法创建这样的握手协议.我希望整个过程对用户透明 - 他想提交密码,而不是处理加密.
谢谢.
以下示例有什么问题?
问题是解密字符串的第一部分是无意义的.但是,剩下的很好,我明白了......
Run Code Online (Sandbox Code Playgroud)Result: `£eB6O?geS??i are you? Have a nice day.
@Test
public void testEncrypt() {
try {
String s = "Hello there. How are you? Have a nice day.";
// Generate key
KeyGenerator kgen = KeyGenerator.getInstance("AES");
kgen.init(128);
SecretKey aesKey = kgen.generateKey();
// Encrypt cipher
Cipher encryptCipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
encryptCipher.init(Cipher.ENCRYPT_MODE, aesKey);
// Encrypt
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
CipherOutputStream cipherOutputStream = new CipherOutputStream(outputStream, encryptCipher);
cipherOutputStream.write(s.getBytes());
cipherOutputStream.flush();
cipherOutputStream.close();
byte[] encryptedBytes = outputStream.toByteArray();
// Decrypt cipher
Cipher decryptCipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
IvParameterSpec ivParameterSpec = …Run Code Online (Sandbox Code Playgroud) Python是否有使用密码编码/解码字符串的内置简单方法?
像这样的东西:
>>> encode('John Doe', password = 'mypass')
'sjkl28cn2sx0'
>>> decode('sjkl28cn2sx0', password = 'mypass')
'John Doe'
Run Code Online (Sandbox Code Playgroud)
所以字符串"John Doe"被加密为'sjkl28cn2sx0'.要获取原始字符串,我将使用密钥'mypass'"解锁"该字符串,这是我的源代码中的密码.我希望这是我用密码加密/解密Word文档的方式.
我想使用这些加密的字符串作为URL参数.我的目标是混淆,而不是强大的安全性; 没有任何关键任务被编码.我意识到我可以使用数据库表来存储键和值,但我试图做到极简主义.
我在Ubuntu机器上安装了SVN,我无法理解某些东西.
每当我从终端结账时,我都会收到有关保存未加密密码的错误消息:
-----------------------------------------------------------------------
ATTENTION! Your password for authentication realm:
<[...]> Subversion Repository
can only be stored to disk
unencrypted! You are advised to
configure your system so that
Subversion can store passwords
encrypted, if possible. See the
documentation for details.
You can avoid future appearances of
this warning by setting the value of
the 'store-plaintext-passwords' option
to either 'yes' or 'no' in
'/home/[...]/.subversion/servers'.
-----------------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)
我把它弄了一下,但我找不到任何有用的东西.我发现一个主题,它说这是一个客户端问题,而不是服务器问题,但我仍然不相信.
它说"配置你的系统"; 究竟是什么意思呢?服务器还是客户端?如果我是服务器,我能做些什么吗?除了隐藏警告(就像它说的那样)......
谢谢!