我刚才看到有可能在rails中解密和加密字符串而不包括任何库,但我找不到博客文章.
我希望能够加密和解密字符串而不包含任何内容.使用相同的密钥可以用于rails中的所有其他内容,例如签名的cookie.
有任何想法吗?
有没有标准的方法来做到这一点?
谷歌搜索 - "近似熵"位 - 揭示多篇学术论文,但我想找到一个伪代码块来定义任意长度的给定位串的近似熵.
(如果这说起来容易做起,而且取决于应用程序,我的应用程序涉及16,320位加密数据(密文).但加密为难题而不是无法破解.我以为我先检查一下熵,但不能轻易找到这样的好定义.所以这似乎是一个应该在StackOverflow上的问题!关于从哪里开始去除16k随机看似位的想法也是受欢迎的......)
另请参阅此相关问题:
熵的计算机科学定义是什么?
从v4.1 Jelly Bean开始,Google为Google Play引入了一项新的应用程序资产加密功能.似乎在升级包含持久性数据的应用程序时出现了一些问题,这些问题是由apk目录中的更改引起的(旧的/data/app,现在是/mnt/asec).
因此,在Google Play上发布(或更新已发布的应用)时,对于OS 2.3+,
除了这个问题,提供额外的防盗版保护的想法似乎没问题,但是在文档的任何地方都有一些我无法解释的额外注意事项:
提前致谢
更新:
修改以包含指向Google代码问题的链接.
问题34880(关闭,但有些开发者仍抱怨;状态:未来发布)
问题35962(已关闭;状态:已发布)
更新#2:由第一期中的一位开发人员链接的此博客文章的
有趣信息.同样在这里,在德国.
用户和开发人员报告说,在最近几天,使用最新版Google Play(3.7.15)安装的应用程序的问题似乎已经消失.以前安装有问题的应用程序的用户需要卸载,然后免费重新下载.根据一份报告,新版Google Play现在再次将付费应用程序保存到/ data/app,这意味着Google暂时停用了复制保护功能.谷歌没有公开评论这个问题.该错误被标记为中等优先级,状态为"FutureRelease"以进行可能的修复.
最新的粗体编辑
我使用.net HttpListener类,但我不会在IIS上运行而且不使用ASP.net.该网站描述了使用asp.net实现SSL实际使用的代码,该网站描述了如何设置证书(尽管我不确定它是否仅适用于IIS).
类文档描述了各种类型的身份验证(基本,摘要,Windows等)---它们都没有引用SSL.它确实说如果使用HTTPS,则需要设置服务器证书.这是一个单行的属性设置,并HttpListener找出其余的?
简而言之,我需要知道如何设置证书以及如何修改代码以实现SSL.
虽然在我尝试访问HTTPS时没有出现,但我确实注意到系统事件日志中有错误 - 源是"Schannel",消息的内容是:
尝试访问SSL服务器凭据私钥时发生致命错误.加密模块返回的错误代码是0x80090016.
编辑:
到目前为止采取的步骤
问题
我刚刚获得了PHP5演出.我不会处理涉及超敏感数据的应用程序部分,但我仍然对安全性和加密方法知之甚少.我只知道非常基础(不要以明文存储密码,不允许用户使用帖子数据运行代码等).为了保证我的应用程序安全,我需要知道什么?我在哪里可以学习它?
我们正在将Web架构迁移到新环境.包括几十个不同的站点,从几乎完全静态到动态站点,需要身份验证和包含敏感内容.我们的Web服务器管理员(没有来自开发团队的任何输入)决定使其成为新环境中的标准,以强制所有内容使用SSL.我不同意这个决定,并希望在我坐下来讨论它时尽可能多地获得知识.这是我到目前为止所拥有的:
当用户进行身份验证或请求敏感数据时,我没有遇到强制SSL的问题.但是,我认为在所有站点上默认强制SSL有点多.
是否可以在传输到远程存储库之前通过'git push'自动加密文件?并在'git pull'时自动解码它们.
即,如果我有一些远程服务器与git存储库共享访问,我不希望我们的项目没有权限被盗...也许在推和拉之前有一些特殊的git-hooks?
我使用rsa密钥加密一个长字符串,我将发送到我的服务器(将使用服务器的公钥和我的私钥加密它)但它抛出一个异常,就像javax.crypto.IllegalBlockSizeException: Data must not be longer than 256 bytes
我觉得我还没有理解rsa的工作到现在为止(使用内置库是导致此问题的原因).
有人可以解释为什么抛出这个异常.是不是可以发送长字符串加密?
我一直在寻找,最接近的答案是:如何生成一个随机的字母数字字符串?
我想根据这个CrackStation教程来遵循这个工作流程:
存储密码
使用CSPRNG生成长的随机盐.
将salt添加到密码中,并使用标准加密哈希函数(如SHA256)对其进行哈希处理.
将salt和hash都保存在用户的数据库记录中.
验证密码
从数据库中检索用户的salt和hash.
将salt添加到给定密码并使用相同的哈希函数对其进行哈希处理.
将给定密码的哈希值与数据库中的哈希值进行比较.如果匹配,则密码正确.否则,密码不正确.
我不知道如何生成SALT.我想出了如何使用MessageDigest生成哈希.我尝试使用SecureRandom,但nextByte方法产生乱码.
编辑:我不知道选择哪个答案,对我来说太复杂了,我决定使用jBCrypt; jBCript很容易使用,在幕后做所有复杂的事情.所以我会让社区投票给出最佳答案.
我正在使用Android M指纹API来允许用户登录该应用程序.为此,我需要在设备上存储用户名和密码.目前我有登录工作,以及指纹API,但用户名和密码都存储为纯文本.我想在存储之前加密密码,并且能够在用户使用指纹进行身份验证后检索密码.
我正在努力解决这个问题.我一直试图从Android安全样本中应用我能做的,但每个例子似乎只处理加密或签名,而不是解密.
到目前为止,我必须获得AndroidKeyStorea KeyPairGenerator和a 的实例Cipher,使用非对称加密技术来允许使用Android KeyGenParameterSpec.Builder().setUserAuthenticationRequired(true).非对称加密的原因是因为如果用户未经过身份验证,该setUserAuthenticationRequired方法将阻止对密钥的任何使用,但是:
此授权仅适用于密钥和私钥操作.公钥操作不受限制.
这应该允许我在用户使用其指纹进行身份验证之前使用公钥加密密码,然后仅在用户通过身份验证后使用私钥进行解密.
public KeyStore getKeyStore() {
try {
return KeyStore.getInstance("AndroidKeyStore");
} catch (KeyStoreException exception) {
throw new RuntimeException("Failed to get an instance of KeyStore", exception);
}
}
public KeyPairGenerator getKeyPairGenerator() {
try {
return KeyPairGenerator.getInstance("EC", "AndroidKeyStore");
} catch(NoSuchAlgorithmException | NoSuchProviderException exception) {
throw new RuntimeException("Failed to get an instance of KeyPairGenerator", exception);
}
}
public Cipher getCipher() {
try {
return …Run Code Online (Sandbox Code Playgroud)