我尝试在 java 6 中使用 OPENSSL_RAW_DATA 执行 PHP openssl_encrypt aes-256-cbc 但没有成功。我找到了一些关于此的主题,但我只成功地在没有 raw_data 的 aes-128-cbc 中做到了这一点。我发现的关于此的最佳主题是:AES-256 CBC 在 php 中加密并在 Java 中解密,反之亦然, 但是 raw_data 不起作用,并且 256 位密钥是随机生成的。事实上 PHP 版本是:
<?php>
openssl(
"hello",
"aes-256-cbc",
"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
OPENSSL_RAW_DATA,
"aaaaaaaaaaaaaaaa"
)
?>
Run Code Online (Sandbox Code Playgroud)
我实际上有这个:
public static void main(String[] args) {
try {
// 128 bits key
openssl_encrypt("hello", "bbbbbbbbbbbbbbbb", "aaaaaaaaaaaaaaaa");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private static String openssl_encrypt(String data, String strKey, String strIv) throws Exception {
Base64 base64 …Run Code Online (Sandbox Code Playgroud) 我已在 Thales HSM 中为 DUKPT 生成了 BDK Type3 密钥。我已将这个在 HSM 的 LMK 下加密的 BDK 发送给终端制造商,以生成 IPEK 密钥并将其注入终端。
当我收到加密数据时,我拥有 KSN,现在我再次需要 BDK 来解密它。我没有将 BDK 存储在我的主机应用程序中的任何位置。如何再次获取 BDK 进行解密。它是否存储在 HSM 中的某个位置.如果有多个 BDK,我如何找到用于该特定终端的正确的 BDK?
我编写了一个操作十六进制值的bash脚本,我需要在两个十六进制数字之间进行异或运算。我的问题是,当我在 bash 提示符中尝试时,它可以工作并返回正确的值,但在脚本中该值是 false。
当 XOR 变量 $ExtendAuthKey 和 $IPAD 时,结果必须为: 181ad673a5d94f0e12c8894ea26381b363636363636363636363636363636363636363636363636363636363636363636363636363 636363636363636363636
但事实上我得到这个值:3906369333256140342
我不明白这种行为,如果你有解释或解决方案,我会接受,谢谢
看我的脚本:`
#!/bin/bash
AuthID=80001f8880e9bd0c1d12667a5100000000
IPAD=0x36363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636
OPAD=0x5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c
Ext0=0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
WholeMsgIn=0x3081800201033011020420dd06a7020300ffe30401050201030431302f041180001f8880e9bd0c1d12667a5100000000020105020120040475736572040c00000000000000000000000004003035041180001f8880e9bd0c1d12667a51000000000400a11e02046b4c5ac20201000201003010300e060a2b06010201041e0105010500
line=test
#Calcule AuthKey
AuthKey=$(snmpkey md5 $line $AuthID | grep auth | cut -d ' ' -f 2)
#Concat AuthKey + Ext0
ExtendAuthKey=$AuthKey${Ext0:2}
#Calcule de K1 = ExtendAuthKey XOR IPAD
K1=$(( $ExtendAuthKey ^ $IPAD ))
#Calcule de K2 = ExtendAuthKey XOR OPAD
K2=$(( $ExtendAuthKey ^ $OPAD ))
#Concat K1 + WholeMsgIn
Concat1=$K1$WholeMsgIn
#Calcul Hash Concat1
echo ${Concat1:2} > tempH.hex …Run Code Online (Sandbox Code Playgroud) 这可能是一个菜鸟问题,但我对提供商的工作方式感到困惑。我尝试阅读此https://docs.oracle.com/javase/7/docs/technotes/guides/security/overview/jsoverview.html,但它对我来说不太有意义。假设我们有:
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding", "BC")
Run Code Online (Sandbox Code Playgroud)
和
Cipher cipher= Cipher.getInstance("AES/CBC/PKCS5Padding")
Run Code Online (Sandbox Code Playgroud)
根据链接,听起来提供商指示了正在使用的实现,但 AES/CBC/PKCS5Padding 基本上与提供商无关吗?在这个例子中,充气城堡(我猜“BC”对应的)是否碰巧有比默认实现更有效的算法?感谢您的时间。
在我的 Android 应用程序中,我需要一种方法来加密本地数据库中存储的数据。我选择 Realm DB 是因为它提供了与加密的无缝集成。我只需要在初始化 Realm 实例时传递一个密钥。该密钥的大小必须为 64 字节。
出于安全原因,我发现存储此密钥的最佳方法是在 AndroidKeyStore 中。我正在努力寻找一种方法来生成具有该大小的密钥(使用任何算法),并将其放入 64 字节数组中。我试图保留 API 19 的 minSdk,但我相信如果需要的话我可以将其提高到 23(这两个版本之间对 AndroidKeyStore 进行了许多更改)。
有人有想法吗?这是我的代码:
类加密.java
private static KeyStore ks = null;
private static String ALIAS = "com.oi.pap";
public static byte[] loadkey(Context context) {
byte[] content = new byte[64];
try {
if (ks == null) {
createNewKeys(context);
}
ks = KeyStore.getInstance("AndroidKeyStore");
ks.load(null);
content= ks.getCertificate(ALIAS).getEncoded(); //<----- HERE, I GET SIZE GREATER THAN 64
Log.e(TAG, "original key :" + Arrays.toString(content));
} catch (KeyStoreException | …Run Code Online (Sandbox Code Playgroud) 我想使用 AWSKmsClient 或 AWS Encryption SDK with Java 来解密我使用以下方法加密的消息AWS CLI
我使用以下方法创建了一条加密消息:
aws kms encrypt --key-id 123421-4032-412c-4321-eds42d1a1b432 --plaintext MyText --output text --query CiphertextBlob
它为我生成了类似这样的内容:
ADCCAHhJotXoy8910T/Pd8PXVaF/Xkg+9NrF9QTy/XlW7rTtUAH6zACj9MbEY1cS7526GfscAAAAZjBkBgkqhkiG9w0BBwagVzBVAgEAMFAGCSqGSIb3DQEHATAeBglghkgBZDEEAS4wEQQMGmYHb67SV66h/eE0AgEQgCONMNda4kVsSi9sPAXXts2F0N/mwjSlIB2ngJcAyxymnltrHQ==
我想将其传递给我的 scala-spark 代码并使用 AWSKmsClient 或 AWS Encryption SDK with Java 对其进行解密。
根据此链接, AWS Encryption SDK 和 AWS KMS 之间似乎存在一些差异:
适用于 Java 的 AWS 加密开发工具包并不与 aws kms 命令行工具兼容。简而言之,AWS 加密 SDK 利用 KMS 提供比单独使用 KMS 更通用的加密功能
我也无法使用 AWSKmsClient 来完成此操作,我是否遗漏了什么?有更好的方法来实现这一目标吗?
这个问题看起来很简单,但我正在准备 70-483 C# 考试,有点困惑。
我知道公钥/私钥是数学上相互关联的属性。一个可以加密消息,另一个可以解密。
我读到的所有内容,例如维基百科、Quora、codeproject 都显示了用于加密的公钥和用于解密的私钥。
然而,我正在进行的模拟考试(MeasureUp)似乎改变了所使用的考试。
有时答案声明使用公钥进行加密,但有时他们声明使用私钥。
例子:
应用程序必须与 DMV 安全通信。DMV 必须确保从您的应用程序发送的数据在传输过程中没有被修改。
回答示例:
生成数据的哈希值。使用您公司的私钥加密哈希值。将数据和加密的哈希值发送到 DMV。
然后“显示答案”部分继续解释上面明确指出使用私钥加密的内容。
难道你必须在上下文中考虑什么是公开的、什么是私有的吗?
例如
A) 如果其他人是否可以看到该消息并不重要,只要他们无法制作自己的消息即可 - 使用您“保密”的密钥进行加密。
B) 如果其他人可以发送消息,只要我是唯一可以阅读该消息的人 - 使用公开可用的密钥进行加密。
我觉得 MeasureUp 可能错了,但我肯定比大公司更有可能错。
请有人解释/澄清为什么这个答案是正确的?
我在 BigQuery 中有一些加密列,我想使用 BigQuery 函数对其进行解密。
加密它们所使用的机制是 AES 256。所使用的向量以 UTF8 编码。生成的数据采用 Base64 加密。
我想要做的是使用函数解密 BigQuery 中传递给我的字段,而无需执行在其他地方解密它们然后将它们集成回 BigQuery 的额外步骤的麻烦。请注意,我在 BigQuery 中可以访问的加密列的类型为字符串。
我读到了一些可以在 BigQuery 中解密的函数,例如 AEAD.DECRYPT_BYTES 和 AEAD.DECRYPT_STRING,我想知道它们是否对我的情况有帮助。
有什么办法可以做到这一点吗?如果是这样,您能引导我完成整个过程吗?
PS:这些不是实际的键和向量值,只是一个类似的示例。
我尝试使用 python 和 numpy 制作希尔密码算法。我进行了加密,没有任何问题。但我在解密时遇到了一些麻烦。根据维基我应该得到类似的东西: 矩阵
使用 numpy 做一个简单的逆运算并不难np.linalg.inv(keyMatrix),但我不能按 26 进行模块化。PS 26 是字母表的长度
注意:这个(冗长的)问题是我上一篇文章的后续问题。
我想在本地实现数据加密(本地RStudio)并远程解密加密数据(托管在shinyapps.io上的应用程序)。
代码的第一部分本质上使用key. 代码的第二部分是一个闪亮的应用程序,它使用相同的数据帧来解密数据帧key,从而在应用程序内使用该数据帧进行身份验证。该代码在我的机器上运行得很好。
但是,当发布到shinyapps.io (基于云的托管服务)时,它会抛出错误,如下所示:
1.用于加密数据帧的代码。
library(sodium)
#> Warning: package 'sodium' was built under R version 3.5.3
library(encryptr)
#> Warning: package 'encryptr' was built under R version 3.5.3
library(cyphr)
#> Warning: package 'cyphr' was built under R version 3.5.3
#>
#> Attaching package: 'cyphr'
#> The following objects are masked from 'package:encryptr':
#>
#> decrypt, decrypt_file, encrypt, encrypt_file
#setting local working directory
#setwd("D://Work/03Mar20/")
df = data.frame( …Run Code Online (Sandbox Code Playgroud) encryption ×10
java ×4
amazon-kms ×1
android ×1
bash ×1
bitwise-xor ×1
bouncycastle ×1
cryptography ×1
dukpt ×1
hsm ×1
javascript ×1
numpy ×1
php ×1
python ×1
r ×1
scala ×1
session ×1
shiny ×1
xor ×1