标签: encryption

java中的openssl_encrypt 256 CBC raw_data

我尝试在 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)

php java encryption

0
推荐指数
1
解决办法
6991
查看次数

我在哪里可以获得用于 DUKPT 解密的 BDK

我已在 Thales HSM 中为 DUKPT 生成了 BDK Type3 密钥。我已将这个在 HSM 的 LMK 下加密的 BDK 发送给终端制造商,以生成 IPEK 密钥并将其注入终端。

当我收到加密数据时,我拥有 KSN,现在我再次需要 BDK 来解密它。我没有将 BDK 存储在我的主机应用程序中的任何位置。如何再次获取 BDK 进行解密。它是否存储在 HSM 中的某个位置.如果有多个 BDK,我如何找到用于该特定终端的正确的 BDK?

encryption hsm dukpt

0
推荐指数
1
解决办法
3710
查看次数

如何在 bash 脚本中异或两个十六进制数字?(异或加密)

我编写了一个操作十六进制值的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)

encryption bash xor encryption-symmetric bitwise-xor

0
推荐指数
1
解决办法
6259
查看次数

在 Java AES 加密中使用提供程序

这可能是一个菜鸟问题,但我对提供商的工作方式感到困惑。我尝试阅读此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”对应的)是否碰巧有比默认实现更有效的算法?感谢您的时间。

java encryption cryptography bouncycastle

0
推荐指数
1
解决办法
1545
查看次数

是否可以生成 64 字节(256 位)密钥并使用 AndroidKeyStore 存储/检索它?

在我的 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)

java encryption android android-keystore

0
推荐指数
1
解决办法
2894
查看次数

如何使用 Java 或 AWSKmsClient 使用 AWS 加密开发工具包解密 AWS KMS 密码

我想使用 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 来完成此操作,我是否遗漏了什么?有更好的方法来实现这一目标吗?

java encryption scala amazon-web-services amazon-kms

0
推荐指数
1
解决办法
5515
查看次数

什么是私钥,什么是公钥?

这个问题看起来很简单,但我正在准备 70-483 C# 考试,有点困惑。

我知道公钥/私钥是数学上相互关联的属性。一个可以加密消息,另一个可以解密。

我读到的所有内容,例如维基百科Quoracodeproject 都显示了用于加密的公钥和用于解密的私钥。

然而,我正在进行的模拟考试(MeasureUp)似乎改变了所使用的考试。

有时答案声明使用公钥进行加密,但有时他们声明使用私钥。

例子:

应用程序必须与 DMV 安全通信。DMV 必须确保从您的应用程序发送的数据在传输过程中没有被修改。

回答示例:

生成数据的哈希值。使用您公司的私钥加密哈希值。将数据和加密的哈希值发送到 DMV。

然后“显示答案”部分继续解释上面明确指出使用私钥加密的内容。

难道你必须在上下文中考虑什么是公开的、什么是私有的吗?

例如

A) 如果其他人是否可以看到该消息并不重要,只要他们无法制作自己的消息即可 - 使用您“保密”的密钥进行加密。

B) 如果其他人可以发送消息,只要我是唯一可以阅读该消息的人 - 使用公开可用的密钥进行加密。

我觉得 MeasureUp 可能错了,但我肯定比大公司更有可能错。

请有人解释/澄清为什么这个答案是正确的?

encryption public-key-encryption

0
推荐指数
1
解决办法
295
查看次数

如何解密 BigQuery 中的列?

我在 BigQuery 中有一些加密列,我想使用 BigQuery 函数对其进行解密。

加密它们所使用的机制是 AES 256。所使用的向量以 UTF8 编码。生成的数据采用 Base64 加密。

我想要做的是使用函数解密 BigQuery 中传递给我的字段,而无需执行在其他地方解密它们然后将它们集成回 BigQuery 的额外步骤的麻烦。请注意,我在 BigQuery 中可以访问的加密列的类型为字符串。

我读到了一些可以在 BigQuery 中解密的函数,例如 AEAD.DECRYPT_BYTES 和 AEAD.DECRYPT_STRING,我想知道它们是否对我的情况有帮助。

有什么办法可以做到这一点吗?如果是这样,您能引导我完成整个过程吗?

PS:这些不是实际的键和向量值,只是一个类似的示例。

javascript encryption google-bigquery google-cloud-platform

0
推荐指数
1
解决办法
7448
查看次数

python 中的矩阵模逆

我尝试使用 python 和 numpy 制作希尔密码算法。我进行了加密,没有任何问题。但我在解密时遇到了一些麻烦。根据维基我应该得到类似的东西: 矩阵

使用 numpy 做一个简单的逆运算并不难np.linalg.inv(keyMatrix),但我不能按 26 进行模块化。PS 26 是字母表的长度

python encryption numpy

0
推荐指数
1
解决办法
1636
查看次数

错误:由于会话密钥已更改而无法解密密钥 | 闪亮应用程序.io | 右

注意:这个(冗长的)问题是我上一篇文章的后续问题。

我想在本地实现数据加密(本地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 session r shiny

0
推荐指数
1
解决办法
1350
查看次数