cryptography相关内容
我正在尝试使用 C# 和 Java 加密相同的数据.如果数据超过 7 个字节,则 Java 和 C# 的加密值不相同. 输入1:a java 输出:FrOzOp/2Io8= C# 输出:FrOzOp/2Io8= 输入 2:abc j : H9A/ahl8K7I= c#: H9A/ahl8K7I= 输入 3:aaaaaaaa(问题) j : Gxl7e0aWPd7j6l7
..
首先,我仅出于学术目的编写以下代码.我之所以这么说是因为我没有把它放在生产环境中,因此我“绕过"了一些我需要做的开销,我只需要能够使用加密/解密字符串下面的代码.有几次我能够做到这一点,但由于某种原因,我开始收到“CryptographicException Bad Data"并且不确定是什么导致了问题. 私有字符串 RSAEncrypt(字符串值){byte[] encryptedData
..
加密时,RSACryptoServiceProvider(或 .NET 提供的任何其他 RSA 加密器)是否可以使用 SHA256 而不是 SHA1? SHA1 似乎是硬编码的,无法更改.例如,RSACryptoServiceProvider.SignatureAlgorithm 被硬编码为返回“http://www.w3.org/2000/09/xmldsig#rsa-sha1".
..
我需要替换 PHP 的 rand() 函数,该函数使用强加密随机数生成器. openssl_random_pseudo_bytes() 函数可让您访问强随机数生成器,但它会将其数据输出为字节字符串.相反,我需要一个介于 0 和 X 之间的整数. 我想关键是将 openssl_random_pseudo_bytes() 的输出转换为整数,然后您可以对其进行任何您需要的数学运算.我可以想到
..
我有一个使用 RSACryptoServiceProvider 使用已知私钥(存储在变量中)解密某些数据的应用程序. 当 IIS 应用程序池配置为使用网络服务时,一切运行正常. 但是,当我们配置 IIS 应用程序池以在不同的身份下运行代码时,我们会得到以下信息: System.Security.Cryptography.CryptographicException:系统找不到指定的文
..
我们正在努力解决我们开发团队的内部争论: 我们正在寻找一个 64 位 PHP 哈希函数.我们找到了 MurmurHash3 的 PHP 实现,但 MurmurHash3 是 32 位或 128 位,而不是 64-位. 同事 #1 认为,要从 MurmurHash3 生成 64 位散列,我们可以简单地对 128 位散列的第一个(或最后一个,或任何一个)64 位进行切片,并且它将是防冲突的
..
背景:我在数据库中使用 AES(即对称加密)加密了一些数据.在(假定的)安全且隔离的 Linux 机器上运行的服务器端应用程序使用此数据.它从数据库中读取加密数据,并写回加密数据,只处理内存中未加密的数据.因此,为了做到这一点,应用程序需要将密钥存储在内存中. 问题是,有什么好的最佳实践吗?保护内存中的密钥. 一些想法: 将其保存在不可交换的内存中(对于 linux:使用 shm
..
哪些 Java 加密扩展 (JCE) 提供程序符合 FIPS 140-2?更具体地说,Sun/Oracle 提供商是否符合条件? 解决方案 根据本页: IBM 和 RSA 拥有经过 FIPS 140-2 验证的 JCE 提供程序. BouncyCastle 拥有经过 FIPS 140-2 验证的 Java 7 和 JCE 提供程序8.(请参阅 充气城堡军团 - FIPS 资源页面.
..
正如标题所说:非安全随机数生成器和安全随机数生成器有什么区别? 解决方案 没有计算上可行的算法应该: 恢复种子,或 预测“下一点" 用于安全的随机数生成器. 示例:线性反馈移位寄存器产生大量随机数,但如果输出足够多,就可以发现种子并预测所有后续数字.
..
这段代码安全吗? SecureRandom randomizer = new SecureRandom(String.valueOf(new Date().getTime()).getBytes()); 这是实例化安全随机种子的正确方法吗? 解决方案 不,你应该避免使用 SecureRandom(byte[]) 构造函数.它既不安全也不便携. 它是不可移植的,因为它在 Wind
..
我想创建一个许可证密钥,您会推荐哪种加密算法? 基本上输入是: 公司名称 主版本号 创建日期 有效期 有特点1: 有特点2: 有特点3: 例如Acme 公司 5.0 20081102 20081102 0 1 0 相关:内置 .NET 加密算法最安全? 解决方案 我建议:不要花太多时间来保护您的密钥.使用字节编译语言很容易反编译,只需让应用程序跳过验证步
..
来自 维基百科 在密码学中,定时攻击是一种边信道攻击,其中攻击者试图通过分析时间来破坏密码系统用于执行加密算法. 实际上,为了防止定时攻击,我使用了以下函数,取自 这个答案: function timingSafeCompare($safe, $user) {//如果字符串长度为 0,则防止出现问题$安全 .= chr(0);$user .= chr(0);$safeLen = st
..
我通过 opensc-tool 向我的 java 卡发送 80 50 00 00 08 00 00 00 00 00 00 00 00 [INITILIZE UPDATE 命令] 并收到 00 00 11 60 01 00 8A 79 0A F9 FF 02 00 11 79 11 36 5D 71 00 A5 A5 EC 63 BB DC 05 CC [Init Response] 作为来自卡的
..
有人能指出我正确的方向吗? 我想使用 JCE/JCA 从主密钥派生新密钥,我该如何实现? 问候. 解决方案 JCA 提供标准的基于密码的密钥派生函数,如 PKCS#5 v2.0 和 RFC 2898.该算法从主密钥(密码)中创建一些随机材料,以生成适合给定密码的密钥. public byte[] derivedKey(String password, byte[] salt,
..
您能帮我指出默认的 RSA 填充是什么吗? 确切地说,如果我创建如下密码实例,确保 java 使用某种填充作为加密文本字节长度始终显示 256 字节的 2048 RSA 密钥,无论纯文本是一个字符还是 10 个字符. Cipher.getInstance("RSA") 如果在 Cipher.getInstance("RSA") 中没有指定填充,我想知道 java 内部使用的默认填充是什么
..
我正在阅读关于 MD5 哈希值的 这个问题接受的答案让我感到困惑.据我了解,加密哈希函数的主要属性之一是不可能找到两个具有相同哈希值的不同消息(输入). 然而,对于为什么 MD5 哈希值不可逆?这个问题的共识答案是 因为无限数量的输入字符串会产生相同的输出. 这似乎完全和我矛盾. 另外,让我有些困惑的是算法是公开的,但哈希值仍然是不可逆的.这是因为哈希函数中总是存在数据丢失,因此无法判
..
以以下格式发送字符串: -----BEGIN RSA PUBLIC KEY-----MIGHAoGBANAahj75ZIz9nXqW2H83nGcUao4wNyYZ9Z1kiNTUYQl7ob/RBmDzs5rYmUahXAg0qyS7+a55eU/csShf5ATGzAXv+DDPcz8HrSTcHMEFpuyYooX6PrIZ07MaXtsJ2J4mhlySI5uOZVRDoaFY53MPQ
..
所以我有这个完全在客户端上运行的游戏.除了下载初始脚本来玩游戏之外,没有任何服务器交互.无论如何,在游戏结束时,我希望客户端将分数发回给我,这些分数应该在服务器数据库中更新.现在我已经开始接受这样一个事实,即在地球上我无法向黑客隐藏这一点并原封不动地发送分数.但我想知道我可以修改整个过程到什么级别,这对于黑客操纵正在发送的数据来说实际上变得非常不可行.当然,我不希望从客户端机器以纯文本形式发送分数
..
如果我有一个 32 个字符的字符串(一个 MD5 哈希)并且我使用 Base64 对其进行编码,那么编码字符串的最大长度是多少? 解决方案 在 Base64 表示法中,MD5 值始终为 22(有用)字符.许多 Base64 算法在编码 MD5 散列时还会附加 2 个填充字符,使总数达到 24 个字符.填充没有添加有用的信息,可以丢弃.只有前 22 个字符很重要. 原因如下: M
..
我有一个使用 openssl 工具进行加密的 bash 脚本. #!/bin/bashkey128="1234567890123456"iv="1234567890123456"openssl enc -aes-128-cbc -in test -out test.enc -K $key128 -iv $iv 以及尝试解密脚本生成的文件的 Java 代码. 公共类加密{公共静态无效主要(字符
..