Tag: encryption

如何使用TPM(可信平台模块)encryption字节

如何使用机器的TPM模块encryption字节? CryptProtectData Windows提供了一个(相对)简单的API来使用CryptProtectData API来encryption一个blob,我们可以使用这个API来封装一个简单易用的函数: public Byte[] ProtectBytes(Byte[] plaintext) { //… } ProtectBytes的细节并不重要,因为你可以很容易地使用它: 这里是我想要encryption的字节保存在System密钥 把我加回去encryption的blob 返回的blob是一个未公开的文档结构,其中包含解密和返回原始数据所需的所有内容(哈希algorithm,密码algorithm,盐,HMAC签名等)。 为了完整ProtectBytes ,下面是使用Crypt API保护字节的ProtectBytes示例伪代码实现: public Byte[] ProtectBytes(Byte[] plaintext) { //Setup our n-byte plaintext blob DATA_BLOB dataIn; dataIn.cbData = plaintext.Length; dataIn.pbData = Addr(plaintext[0]); DATA_BLOB dataOut; //dataOut = EncryptedFormOf(dataIn) BOOL bRes = CryptProtectData( dataIn, null, //data description (optional PWideChar) null, //optional entropy (PDATA_BLOB) […]

有关生成OAuth令牌的最佳做法?

我意识到OAuth规范没有规定ConsumerKey,ConsumerSecret,AccessToken,RequestToken,TokenSecret或Verifier代码的来源,但我很好奇是否有任何最佳做法来创build安全的令牌(特别是令牌/秘密组合)。 正如我所看到的,有几种创build令牌的方法: 只需使用随机字节,存储在关联到消费者/用户的数据库中 散列一些用户/消费者特定的数据,存储在与消费者/用户相关的数据库中 encryption用户/消费者特定的数据 (1)的优点是数据库是似乎最安全的信息的唯一来源。 比(2)或(3)更难攻击。 散列真实数据(2)将允许从可能已知的数据重新生成令牌。 (1)可能不会提供任何好处,因为无论如何都需要存储/查找。 比(1)更多的CPU密集度。 encryption真实数据(3)将允许解密以获知信息。 这会比(1)和(2)需要更less的存储和潜在的更less的查找,但是可能不太安全。 还有其他方法/优点/缺点应该考虑吗? 编辑:另一个考虑是在令牌必须有某种随机值,因为必须有能力过期和重新发布新的令牌,所以它不能只包含真实的数据。 关注问题 : 是否有一个最小令牌长度,以显着encryption安全? 据我所知,更长的令牌秘密会创build更安全的签名。 这种理解是否正确? 从哈希的angular度来看,使用特定的编码是否有优势? 例如,我看到很多使用hex编码的API(例如GUIDstring)。 在OAuth签名algorithm中,令牌用作string。 使用hexstring,可用字符集将比使用Base64编码时小得多(更可预测)。 在我看来,对于两个长度相等的string,具有较大字符集的string将具有更好/更宽的散列分布。 在我看来,这会提高安全性。 这个假设是否正确? OAuth规范在11.10的秘密熵中提出了这个问题。

Java支持让我们encryption证书吗?

我正在开发一个通过HTTP与远程服务器进行通信的Java应用程序。 几个月前,我试图通过在服务器上安装一个StartSSL证书来切换到HTTPS。 像Chrome或Firefox这样的常见浏览器接受了证书,但是由于StartSSL不在Java的默认可信CA列表中,所以我的应用程序拒绝了连接。 最后,我回到使用HTTP。 现在让我们encryption开始他们的公开testing,我想知道是否Java当前工作(或被确认在未来工作)与他们的证书默认情况下。 让我们encryption得到他们的IdenTrust交叉签名 ,这应该是个好消息。 但是,在这个命令的输出中我找不到这两个中的任何一个: keytool -keystore "..\lib\security\cacerts" -storepass changeit -list 我知道可信任的CA可以在每台机器上手动添加,但由于我的应用程序应该可以自由下载和执行,无需进一步的configuration,我正在寻找可以“开箱即用”的解决scheme。 你对我有好消息吗?

保护Java源代码不被访问

上周,我不得不为作业创build一个小GUI。 我的学校没有一个同学做到了。 他们从我们不得不上传的地方偷走了我的,然后他们再次上传。 当我告诉我的老师,这是我所有的工作,他不相信我。 所以我想把一个无用的方法或者其他东西放在一个certificate我编码的东西里面。 我想到了encryption。 到目前为止,我最好的想法是: String key = ("ZGV2ZWxvcGVkIGJ5IFdhckdvZE5U"); //My proof in base64 你能想到其他更好的方法吗?

AES与Blowfish进行文件encryption

我想encryption一个二进制文件。 我的目标是防止任何人读取没有密码的文件。 哪个更好的解决scheme,AES或Blowfish具有相同的密钥长度? 我们可以假设攻击者有很多资源(软件,知识,金钱)来破解文件。

DSA和RSA有什么区别?

看来他们都是需要公钥和私钥的encryptionalgorithm。 为什么我会select一个与另一个在我的客户端服务器应用程序中提供encryption?

如何在Java中使用sha256来散列一些string?

如何在Java中sha256的一些string? 有没有人知道这个免费的图书馆?

SVNencryption密码存储

我在Ubuntu机器上安装了SVN,我无法摆脱困境。 每当我从terminal签出一些东西,我得到这个关于保存一个非encryption密码的错误: ———————————————————————– 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' […]

有没有办法在Git中用GPG键“自动签名”提交?

只是想问这里是否有一个简单的方法来确保Git始终签署它创build的每个提交或创build的标记? 我尝试了这样的东西: 别名commit = commit -S 但是这并没有诀窍。 我不想安装所有不同的大型程序来实现这一点。 只要它是可行的,不是一个可以维护的问题。 只是一个侧面的问题,也许提交不应该签署,只有标签,我从来没有创build,因为我提交单个提交。 像Homebrew等项目

用户密码salt的最佳长度是多less?

当腌制和散列用户密码时,任何盐都显然会有帮助。 盐应该有多长时间? 我将把salt存储在我的用户表中,所以我希望在存储大小和安全性之间取得最佳平衡。 是一个随机的10字符盐够了吗? 还是我需要更长的时间?