Questions tagged «encryption»

加密是使用与参数(称为加密密钥)结合的加密算法将信息(称为纯文本)转换为不可读形式(称为密文)的过程。只有拥有解密密钥的人才能撤消该过程并恢复原始明文。有关加密的概念性问题可能会在crypto.stackexchange.com上获得更好的答案。

11
Android使用AES进行加密/解密
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 9个月前关闭。 改善这个问题 有没有一个很好的示例,说明如何在Android上使用AES 加密和解密图像及其他文件?
105 java  android  encryption  aes 

10
不推荐使用mcrypt,替代方法是什么?
根据此处发布的评论,不建议使用 mcrypt-extension 并将在PHP 7.2中删除。因此,我正在寻找一种加密密码的替代方法。 现在我正在使用类似 mcrypt_encrypt(MCRYPT_RIJNDAEL_128, md5($key, true), $string, MCRYPT_MODE_CBC, $iv) 我需要您的意见以最好/最有效的方式对密码进行加密,当然,加密的密码应受PHP 7.xx支持,并且也应可解密,因为我的客户确实希望选择“恢复”密码而不生成新密码之一。

6
将密钥转换为字符串,反之亦然
我正在生成密钥,需要将其存储在数据库中,因此我将其转换为字符串,但要从字符串中获取密钥。有哪些可能的方法可以做到这一点? 我的代码是 SecretKey key = KeyGenerator.getInstance("AES").generateKey(); String stringKey=key.toString(); System.out.println(stringKey); 如何从字符串取回密钥?
102 java  string  encryption 

1
有关生成OAuth令牌的最佳做法?
我意识到OAuth规范并未指定关于ConsumerKey,ConsumerSecret,AccessToken,RequestToken,TokenSecret或Verifier代码的来源的任何信息,但是我很好奇是否存在创建显着安全的令牌(尤其是Token /秘密组合)。 如我所见,有几种创建令牌的方法: 只需使用随机字节,存储在与使用者/用户关联的数据库中 散列一些特定于用户/消费者的数据,存储在与消费者/用户关联的数据库中 加密用户/消费者特定的数据 (1)的优点是数据库是看起来最安全的信息的唯一来源。攻击要比(2)或(3)难。 散列实际数据(2)将允许从可能已经已知的数据中重新生成令牌。可能不会真正为(1)提供任何优势,因为无论如何都需要存储/查找。比(1)占用更多的CPU资源。 加密真实数据(3)将允许解密以了解信息。与(1)和(2)相比,这将需要较少的存储空间并可能需要更少的查找,但是安全性也可能较低。 还有其他应考虑的方法/优点/缺点吗? 编辑:另一个考虑是令牌中必须有某种随机值,因为必须存在过期和重新发行新令牌的能力,因此它不能仅由真实数据组成。 遵循问题: 是否有最小令牌长度才能显着地确保密码安全?据我了解,更长的令牌机密会创建更安全的签名。这种理解正确吗? 从散列的角度来看,使用特定编码相对于其他编码是否有优势?例如,我看到很多使用十六进制编码的API(例如GUID字符串)。在OAuth签名算法中,令牌用作字符串。如果使用十六进制字符串,则可用的字符集将比使用Base64编码的字符集小得多(更可预测)。在我看来,对于两个长度相等的字符串,具有较大字符集的字符串将具有更好/更广泛的哈希分布。在我看来,这将提高安全性。这个假设正确吗? OAuth规范在11.10秘密熵中提出了这个问题。

10
隐藏盐以进行哈希处理的必要性
在工作中,我们有两种相互竞争的盐理论。我从事的产品使用诸如用户名或电话号码之类的东西来加杂凑。从本质上讲,每个用户都有所不同,但我们可以随时使用。其他产品会为每个用户随机生成一个盐,并在用户每次更改密码时都会更改它。然后将盐在数据库中加密。 我的问题是第二种方法是否真的必要?从纯粹的理论角度我可以理解,它比第一种方法更安全,但是从实用性角度来看又如何呢?现在要对用户进行身份验证,必须对salt进行加密,并将其应用于登录信息。 在考虑之后,我只是看不到这种方法真正的安全性收益。即使在攻击者知道如何快速确定每个帐户的含义的情况下,一个帐户一个帐户地更改盐,仍然使某人尝试强行使用哈希算法仍然非常困难。假设密码足够强。(显然,找到一组均为两位数字的密码,正确的哈希值要比找到正确的8位密码的哈希值容易得多)。我的逻辑是否正确,或者我缺少什么? 编辑:好的,这就是为什么我认为加密盐真的没有意义。(让我知道自己是否走对了路)。 对于以下说明,我们假设密码始终为8个字符,salt为5,并且所有密码均由小写字母组成(这使数学更容易了)。 每个条目具有不同的盐值意味着我不能使用相同的彩虹表(实际上,如果我有一个足够大的表,我可以使用,但是暂时暂时忽略它)。从我的理解中,这是盐的真正关键,因为要破解每个帐户,我都必须重新发明轮子,以便为每个帐户说话。现在,如果我知道如何对密码应用正确的盐来生成哈希,我会这样做,因为盐实际上只是在扩展哈希短语的长度/复杂度。因此,我将减少生成“知道”密码(从13 ^ 26到8 ^ 26的密码)所需的可能组合的数量,因为我知道盐是什么。现在,它变得更容易,但仍然非常困难。 因此就加密了盐。如果我知道盐是加密的,那么我不会尝试对其进行解密(假设我知道它具有足够的加密级别)。我会忽略它。回到上一个示例,而不是试图弄清楚如何解密它,我只会生成一个更大的Rainbow表,其中包含13 ^ 26的所有密钥。不知道加盐肯定会使我慢下来,但是我认为这不会增加尝试先破解加盐加密的艰巨任务。这就是为什么我认为这不值得。有什么想法吗? 以下是描述在暴力攻击下密码将保留多长时间的链接:http : //www.lockdown.co.uk/? pg=combi

10
产生短哈希的哈希函数?
有没有一种加密方法可以采用任意长度的字符串并产生一个小于10个字符的哈希值?我想生成合理唯一的ID,但要基于消息内容,而不是随机生成。 但是,如果不可能使用任意长度的字符串,我可以将消息限制为整数值。但是,在这种情况下,对于两个连续的整数,散列一定不能相似。

11
保护Java源代码不被访问[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使其成为Stack Overflow 的主题。 7年前关闭。 改善这个问题 上周,我不得不为作业创建一个小GUI。我的同学都没有这样做。他们从我们必须上传的地方偷走了我的那一部,然后又以自己的名字再次上传了。当我告诉老师这是我的全部工作时,他不相信我。 因此,我想到了将无用的方法或某些东西放入我编码过的证明中。我想到了加密。到目前为止,我最好的主意是: String key = ("ZGV2ZWxvcGVkIGJ5IFdhckdvZE5U"); //My proof in base64 您能想到其他更好的方法吗?
96 encryption 

8
我需要在Python中安全地存储用户名和密码,我有哪些选择?
我正在编写一个小的Python脚本,该脚本将使用用户名和密码组合定期从第三方服务中获取信息。我不需要创建100%防弹的东西(甚至存在100%的东西吗?),但是我想采用一种很好的安全措施,因此至少有人要花很长时间才能破解它。 该脚本没有GUI,将由定期运行cron,因此每次运行解密内容时都不会真正输入密码,因此我必须将用户名和密码存储在加密文件或加密文件中在SQLite数据库中,这将是更好的选择,因为无论如何我都将使用SQLite,并且可能需要在某个时候编辑密码。另外,我可能会将整个程序包装在EXE中,因为这时它仅适用于Windows。 如何安全地存储通过cron作业定期使用的用户名和密码组合?



5
在Android中使用AES加密的最佳做法是什么?
为什么我问这个问题: 我知道,即使对于Android,也存在很多关于AES加密的问题。如果您在网上搜索,则有很多代码片段。但是,在每个页面上,在每个堆栈溢出问题中,我都发现另一个实现方式存在重大差异。 因此,我提出了这个问题以寻找“最佳实践”。我希望我们可以收集最重要的要求的清单,并建立一个真正安全的实现! 我读了有关初始化向量和盐的信息。我发现并非所有实现都具有这些功能。那你需要吗?它会大大提高安全性吗?您如何实施?如果加密的数据无法解密,该算法是否应该引发异常?还是那是不安全的,它应该只返回不可读的字符串?该算法可以使用Bcrypt代替SHA吗? 我发现的这两个实现又如何呢?可以吗 完美还是缺少一些重要的东西?这些是安全的吗? 该算法应使用字符串和“密码”进行加密,然后使用该密码对字符串进行加密。输出应再次为字符串(十六进制或base64?)。当然,解密也应该是可能的。 什么是Android的完美AES实现? 实施#1: import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.security.NoSuchProviderException; import java.security.SecureRandom; import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.PBEKeySpec; import javax.crypto.spec.SecretKeySpec; public class AdvancedCrypto implements ICrypto { public static final String PROVIDER = "BC"; public static final int SALT_LENGTH = 20; public …

7
如何导出私有/秘密ASC密钥以解密GPG文件
背景:我的老板曾尝试向我导出带有公共和私有部分的ASC密钥,但是每当我得到文件时,私有部分就永远不会加载,也不会解密任何文件。 我们尝试使用以下方法导出ASC密钥: Windows应用程序Kleopatra 2.1(包含在gpg4win中) Windows应用程序GNU Privacy Assistant(包含在gpg4win中) Error: "Decryption failed. Secret Key Not available." 您如何正确导出秘密或私有asc密钥来解密gpg文件?

11
混淆ID
我正在寻找一种将整数ID加密/混淆为另一个整数的方法。更准确地说,我需要一个函数int F(int x),以便 x <-> F(x)是一一对应的(如果x!= y,F(x)!= F(y)) 给定F(x),很容易找出x-因此F不是哈希函数 给定x和F(x),很难/不可能找出F(y),类似的东西是x ^ 0x1234行不通的 为了清楚起见,我并不是在寻找强大的加密解决方案,而只是在混淆。想象一下,像URL的Web应用程序example.com/profile/1,example.com/profile/2等型材本身并不是秘密,但我想,以防止随意偷窥到视图/读取所有配置了一个又一个,所以我宁愿躲在他们身后像example.com/profile/23423,example.com/profile/80980234等等。虽然数据库存储的令牌可以很轻松地完成这项工作,我很好奇是否有一些简单的数学方法可用于此。 我不清楚的一个重要要求是结果应该看起来是“随机的”,也就是说,给定一个序列x,x+1,...,x+n,F(x),F(x+1)...F(x+n)不应形成任何形式的进展。

4
如何解密加密的Apple iTunes iPhone备份?
许多不幸的iPhone用户曾要求我帮助他们从iTunes备份中还原数据。当未加密时,这很容易,但是无论是否知道密码,都不容易。 因此,我试图找出加密时用于mddata和mdinfo文件的加密方案。否则,我可以毫无疑问地读取这些文件,并且为此构建了一些健壮的C#库。(如果您能提供帮助,我不在乎您使用哪种语言。这是我在这里遵循的原则!) 苹果公司的《 iPhone OS企业部署指南》指出:“可以通过在iTunes的设备摘要窗格中选择“加密iPhone备份”选项,以加密格式存储设备备份。文件使用256位密钥的AES128进行加密。安全地存储在iPhone钥匙串中。” 这是一个很好的线索,并且在iPhone AES / Rijndael互操作性上的Stackoverflow上有一些很好的信息,建议使用128的密钥大小和CBC模式。 除了其他混淆之外,还需要密钥和初始化向量(IV)/盐。 人们可能会认为该密钥是对“备份密码”的一种操纵,iTunes会提示用户输入该密码,并将其传递给“ AppleMobileBackup.exe ”,并以CBC规定的方式进行填充。但是,考虑到iPhone钥匙串,我想知道“备份密码”是否可能不用作X509证书或对称私钥上的密码,以及该证书或私钥本身是否可以用作密钥。(AES和iTunes的加密/解密过程是对称的。) IV是另一回事,可能是几件事。也许它是硬编码到iTunes或设备本身的密钥之一。 尽管Apple的上述评论暗示密钥存在于设备的钥匙串中,但我认为这并不那么重要。可以将加密的备份还原到另一台设备,这表明备份和iTunes配置中存在与解密相关的所有信息,并且在这种情况下,仅设备上的任何内容都是不相关且可替换的。那么关键可能在哪里? 我在下面列出了Windows机器上的路径,但是无论我们使用哪种操作系统,它在很大程度上都是很大的。 “ \ appdata \ Roaming \ Apple Computer \ iTunes \ itunesprefs.xml”包含一个带有“ Keychain”字典条目的PList。“ \ programdata \ apple \ Lockdown \ 09037027da8f4bdefdea97d706703ca034c88bab.plist”包含带有“ DeviceCertificate”,“ HostCertificate”和“ RootCertificate”的PList,它们似乎都是有效的X509证书。同一文件似乎还包含非对称密钥“ RootPrivateKey”和“ HostPrivateKey”(我的阅读显示,这些密钥可能被PKCS#7包围)。另外,在每个备份中,Manifest.plist文件中都有“ AuthSignature”和“ AuthData”值,尽管随着每个文件的增量备份它们似乎会轮换,但建议它们作为键不是那么有用,除非真正相当复杂的工作正在完成。 有很多误导性的内容表明从加密备份中获取数据很容易。并非如此,据我所知,这还没有完成。完全绕过或禁用备份加密是另一回事,而不是我要执行的操作。 这与破解iPhone或类似的东西无关。我要做的只是从未加密的iTunes备份中提取数据(照片,联系人等)的一种方法。我已经使用上面提供的信息尝试了各种排列,但没有结果。我会很想念我可能错过的任何想法或技巧。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.