标签: encryption

使用Rails加密,解密

我刚才看到有可能在rails中解密和加密字符串而不包括任何库,但我找不到博客文章.

我希望能够加密和解密字符串而不包含任何内容.使用相同的密钥可以用于rails中的所有其他内容,例如签名的cookie.

有任何想法吗?

encryption ruby-on-rails

43
推荐指数
3
解决办法
3万
查看次数

如何计算位串的近似熵?

有没有标准的方法来做到这一点?

谷歌搜索 - "近似熵"位 - 揭示多篇学术论文,但我想找到一个伪代码块来定义任意长度的给定位串的近似熵.

(如果这说起来容易做起,而且取决于应用程序,我的应用程序涉及16,320位加密数据(密文).但加密为难题而不是无法破解.我以为我先检查一下熵,但不能轻易找到这样的好定义.所以这似乎是一个应该在StackOverflow上的问题!关于从哪里开始去除16k随机看似位的想法也是受欢迎的......)

另请参阅此相关问题:
熵的计算机科学定义是什么?

encryption entropy data-compression information-theory

42
推荐指数
6
解决办法
3万
查看次数

有关Google Play应用资产加密的问题

从v4.1 Jelly Bean开始,Google为Google Play引入了一项新的应用程序资产加密功能.似乎在升级包含持久性数据的应用程序时出现了一些问题,这些问题是由apk目录中的更改引起的(旧的/data/app,现在是/mnt/asec).

因此,在Google Play上发布(或更新已发布的应用)时,对于OS 2.3+,

  • 我可以禁用此选项并发布未加密的应用程序吗?
  • 问题的当前状态是什么?有解决方法吗?

除了这个问题,提供额外的防盗版保护的想法似乎没问题,但是在文档的任何地方都有一些我无法解释的额外注意事项:

  • 那些发布到替代商店或通过OTA部署的应用程序呢?他们也可以加密吗?如果没有,那么如果有人可以从其他地方下载未加密的apk并直接反编译,那么在Google Play发布中造成如此大的痛苦的重点是什么?
  • 可以通过生根电话来打败它吗?
  • 为OS 4.0+提供的apks是唯一有保护的吗?如果是这样,那么,如果有人可以将未加密的apk下载到Gingerbread手机,用adb将其拉出并以通常的方式反编译,那又有什么意义呢?
  • 假设机制有效:备份应用程序(如Titanium Backup)或使用adb的手动apk备份怎​​么样?他们还会工作吗?
  • 性能:某些应用可能具有相当大的apk大小.这种机制会妨碍性能吗?操作系统每次加载时都会解密整个apk吗?

提前致谢

更新:
修改以包含指向Google代码问题的链接.
问题34880(关闭,但有些开发者仍抱怨;状态:未来发布)
问题35962(已关闭;状态:已发布)

更新#2:由第一期中的一位开发人员链接的此博客文章的
有趣信息.同样在这里,在德国.

用户和开发人员报告说,在最近几天,使用最新版Google Play(3.7.15)安装的应用程序的问题似乎已经消失.以前安装有问题的应用程序的用户需要卸载,然后免费重新下载.根据一份报告,新版Google Play现在再次将付费应用程序保存到/ data/app,这意味着Google暂时停用了复制保护功能.谷歌没有公开评论这个问题.该错误被标记为中等优先级,状态为"FutureRelease"以进行可能的修复.

encryption android apk google-play android-4.2-jelly-bean

42
推荐指数
1
解决办法
2139
查看次数

如何将SSL添加到使用httplistener的.net应用程序 - 它将*不会在IIS上运行

最新的粗体编辑 我使用.net HttpListener类,但我不会在IIS上运行而且不使用ASP.net.该网站描述了使用asp.net实现SSL实际使用的代码,该网站描述了如何设置证书(尽管我不确定它是否仅适用于IIS).

类文档描述了各种类型的身份验证(基本,摘要,Windows等)---它们都没有引用SSL.它确实说如果使用HTTPS,则需要设置服务器证书.这是一个单行的属性设置,并HttpListener找出其余的?

简而言之,我需要知道如何设置证书以及如何修改代码以实现SSL.

虽然在我尝试访问HTTPS时没有出现,但我确实注意到系统事件日志中有错误 - 源是"Schannel",消息的内容是:

尝试访问SSL服务器凭据私钥时发生致命错误.加密模块返回的错误代码是0x80090016.

编辑:
到目前为止采取的步骤

  • 在C#中创建了一个适用于HTTP连接的工作HTTPListener(例如" http:// localhost:8089/foldername / "
  • 使用makecert.exe创建证书
  • 使用certmgr.exe添加了要信任的证书
  • 使用Httpcfg.exe监听测试端口上的SSL连接(例如8090)
  • 通过listener.Prefixes.Add(https:// localhost:8090/foldername / ")将端口8080添加到HTTPListener ;
  • 在浏览器中测试了HTTP客户端连接,例如(http:// localhost:8089/foldername / ")并收到正确的返回
  • 测试了一个HTTPS客户端连接,例如(http:// localhost:8090/foldername / ")在浏览器中接收"数据传输中断"(在Firefox中)
  • Visual Studio中的调试显示,当HTTPS连接启动时,接收请求的侦听器回调永远不会被命中 - 我没有看到任何可以设置断点以便先捕获其他内容的地方.
  • netstat显示侦听端口对HTTPS和HTTP都是开放的.尝试连接后,HTTPS端口会转到TIME_WAIT.
  • FiddlerHTTPAnalyzer没有捕获任何流量,我想它在这些HTTP分析工具中显示的过程中还不够

问题

  • 问题是什么?
  • 是否有一段我缺少的.Net代码(这意味着我必须在C#中做更多的事情,而不是简单地向指向HTTPS的侦听器添加前缀,这就是我所做的)
  • 在某个地方错过了配置步骤?
  • 我还可以做些什么来分析问题?
  • 系统事件日志中的错误消息是否是问题的标志?如果是这样,它将如何修复?

.net authentication encryption ssl

41
推荐指数
3
解决办法
2万
查看次数

每个Web开发人员应该如何了解加密?

我刚刚获得了PHP5演出.我不会处理涉及超敏感数据的应用程序部分,但我仍然对安全性和加密方法知之甚少.我只知道非常基础(不要以明文存储密码,不允许用户使用帖子数据运行代码等).为了保证我的应用程序安全,我需要知道什么?我在哪里可以学习它?

php encryption

41
推荐指数
7
解决办法
1799
查看次数

所有网站都应默认使用SSL吗?

我们正在将Web架构迁移到新环境.包括几十个不同的站点,从几乎完全静态到动态站点,需要身份验证和包含敏感内容.我们的Web服务器管理员(没有来自开发团队的任何输入)决定使其成为新环境中的标准,以强制所有内容使用SSL.我不同意这个决定,并希望在我坐下来讨论它时尽可能多地获得知识.这是我到目前为止所拥有的:

  • 对于每个站点,SSL证书都有直接成本.我们有一个dev,qa和prod环境,因此每个站点需要三个证书
  • 对于大多数页面而言,内容不安全,并且由于加密和解密,强制SSL会使页面请求在服务器上花费更长时间
  • 据我所知,大多数浏览器不会缓存SSL的页面,因此页面请求将需要更长时间
  • 较旧的浏览器在进行SSL时会出现文件下载问题

当用户进行身份验证或请求敏感数据时,我没有遇到强制SSL的问题.但是,我认为在所有站点上默认强制SSL有点多.

encryption ssl https webserver server-administration

41
推荐指数
4
解决办法
1万
查看次数

git在推/拉时加密/解密远程存储库文件

是否可以在传输到远程存储库之前通过'git push'自动加密文件?并在'git pull'时自动解码它们.

即,如果我有一些远程服务器与git存储库共享访问,我不希望我们的项目没有权限被盗...也许在推和拉之前有一些特殊的git-hooks?

git encryption

41
推荐指数
4
解决办法
2万
查看次数

获取IllegalBlockSizeException:使用rsa时,数据不得超过256个字节

我使用rsa密钥加密一个长字符串,我将发送到我的服务器(将使用服务器的公钥和我的私钥加密它)但它抛出一个异常,就像javax.crypto.IllegalBlockSizeException: Data must not be longer than 256 bytes 我觉得我还没有理解rsa的工作到现在为止(使用内置库是导致此问题的原因).
有人可以解释为什么抛出这个异常.是不是可以发送长字符串加密?

java encryption rsa

41
推荐指数
3
解决办法
6万
查看次数

如何在Java中为Salted-Hash生成SALT?

我一直在寻找,最接近的答案是:如何生成一个随机的字母数字字符串?

我想根据这个CrackStation教程来遵循这个工作流程:

存储密码

  1. 使用CSPRNG生成长的随机盐.

  2. 将salt添加到密码中,并使用标准加密哈希函数(如SHA256)对其进行哈希处理.

  3. 将salt和hash都保存在用户的数据库记录中.

验证密码

  1. 从数据库中检索用户的salt和hash.

  2. 将salt添加到给定密码并使用相同的哈希函数对其进行哈希处理.

  3. 将给定密码的哈希值与数据库中的哈希值进行比较.如果匹配,则密码正确.否则,密码不正确.

我不知道如何生成SALT.我想出了如何使用MessageDigest生成哈希.我尝试使用SecureRandom,但nextByte方法产生乱码.

编辑:我不知道选择哪个答案,对我来说太复杂了,我决定使用jBCrypt; jBCript很容易使用,在幕后做所有复杂的事情.所以我会让社区投票给出最佳答案.

java security encryption hash salt

41
推荐指数
2
解决办法
8万
查看次数

Android指纹API加密和解密

我正在使用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)

encryption android android-keystore android-fingerprint-api

41
推荐指数
1
解决办法
1万
查看次数