标签: encryption

使用 Azure Key Vault 的密钥加密和解密文本

我正在尝试使用 Azure Key Vault 中的密钥来加密和解密 Web API 的 cookie。

对于加密过程,我在该类中使用 RSA:

    public class SimpleRSA
    {
        private RSA _rsa;

        public SimpleRSA(RSA rsa)
        {
            _rsa = rsa;
        }

        public string EncryptAsync(string value)
        {
            var byteData = Encoding.Unicode.GetBytes(value);
            var encryptedText = _rsa.Encrypt(byteData, RSAEncryptionPadding.OaepSHA1);
            var encodedText = Convert.ToBase64String(encryptedText);
            return encodedText;
        }


        public string DecryptAsync(string encryptedText)
        {
            var encryptedBytes = Convert.FromBase64String(encryptedText);
            var decryptionResult = _rsa.Decrypt(encryptedBytes, RSAEncryptionPadding.OaepSHA1);
            var decryptedText = Encoding.Unicode.GetString(decryptionResult);
            return decryptedText;
        }
    }
Run Code Online (Sandbox Code Playgroud)

我使用该代码从密钥中获取 RSA:

  public RSA GetRSA(string appId, string appSecret)
        {
            AuthenticationCallback callback …
Run Code Online (Sandbox Code Playgroud)

c# encryption rsa azure azure-keyvault

0
推荐指数
2
解决办法
9041
查看次数

通过安全令牌进行 API 身份验证的最佳实践(Node.js 服务器和移动应用程序)

通常我们通过 JWT(访问和刷新令牌)保护移动 API。但我们刚刚面临这样的情况:即使 JWT 令牌过期,我们的应用程序也必须 100% 可供用户使用。(这是一些紧急的事情)。用户/应用程序不能等待重新登录并获取新的 JWT 代码。

问题:长时间(...永远)保护 API 调用而不从后端获取新令牌的最佳方法是什么。当每个请求使用每个请求的当前日期时间附件对移动应用程序进行共享密钥加密时,我看到了几次变体...但我不确定这是一个好的解决方案,至少它会存在性能问题(加密的操作时间) /解密请求)。

security authentication api encryption jwt

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

JS 解密 Laravel 加密字符串

我必须laravel 6用 JavaScript 解密加密的字符串。输入 laravel.env文件

APP_KEY=base64:Rva4FZFTACUe94+k+opcvMdTfr9X5OTfzK3KJHIoXyQ=
Run Code Online (Sandbox Code Playgroud)

并且在config/app.php文件密码中设置为以下...

APP_KEY=base64:Rva4FZFTACUe94+k+opcvMdTfr9X5OTfzK3KJHIoXyQ=
Run Code Online (Sandbox Code Playgroud)

到目前为止我所尝试过的如下......

Laravel 代码

'cipher' => 'AES-256-CBC',
Run Code Online (Sandbox Code Playgroud)

HTML 和 JavaScript 代码

$test = 'this is test';
$encrypted = Crypt::encrypt($test);
Run Code Online (Sandbox Code Playgroud)

上述代码的控制台输出如下屏幕截图所示...

在此输入图像描述

我已经尝试了来自谷歌和堆栈溢出的许多其他 JS 代码,但没有运气。

更新

这是在单独的离线系统中解密字符串的要求。我不会在实时网站上使用 javascript 进行加密。相反,用java脚本解密将在离线系统上完成。

javascript php encryption laravel

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

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

C# RSA 导入公钥

我需要验证签名的数据。我不知道如何使用公钥。

    public bool VerifyData(string data, string signature)
    {
        //decode signature from base 64
        byte[] signatureByte = System.Convert.FromBase64String(signature);

        //hash data to sha256
        string hashedData = ConvertToSHA256(data);
        byte[] hashedDataByte = System.Convert.FromBase64String(hashedData);

        //verify with RSA PSS
        string absPath = System.Web.Hosting.HostingEnvironment.MapPath("~/App_Data/TP/public");
        string publicKeyString = File.ReadAllText(absPath);
        publicKeyString = RemoveRSAHeaderAndFooter(publicKeyString);

        RSACryptoServiceProvider RSA = new RSACryptoServiceProvider();
        //This causes error 
        RSA.ImportCspBlob(System.Convert.FromBase64String(publicKeyString));

        RSAParameters rsaParams = RSA.ExportParameters(true);
        RSACng RSACng = new RSACng();
        RSACng.ImportParameters(rsaParams);

        return RSACng.VerifyData(hashedDataByte, signatureByte, HashAlgorithmName.SHA256, RSASignaturePadding.Pss);
    }
Run Code Online (Sandbox Code Playgroud)

导致RSA.ImportCspBlob错误。我的公钥是字符串类型。它看起来像这样:

-----BEGIN PUBLIC KEY-----
XXXXXXXXXXXXXXXXXXXXXXXXXX
-----END PUBLIC KEY-----
Run Code Online (Sandbox Code Playgroud)

我怎样才能验证它? …

c# encryption public-key-encryption

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

是否可以恢复 PBKDF2 哈希密码?

仅使用类PBEKeySpec和,并知道和是否有办法解密以恢复?SecretFactorysaltcodedcodedpassword

public static byte[] encodePassword(char[] password, byte[] salt) {
    PBEKeySpec spec = new PBEKeySpec(password, salt, ITERATIONS, KEY_LENGTH);
    Arrays.fill(password, Character.MIN_VALUE);
    try {
        SecretKeyFactory skf = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1");
        byte[] coded = skf.generateSecret(spec).getEncoded();
        return coded;
    } catch (NoSuchAlgorithmException | InvalidKeySpecException e) {
        throw new AssertionError("Error while hashing a password: " + e.getMessage(), e);
    } finally {
        spec.clearPassword();
    }
}
Run Code Online (Sandbox Code Playgroud)

java encryption

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

PHP 中的 AES 加密和 Javascript 中的解密

我有一个应用程序,其中使用 AES CBC 128 算法加密 json 编码数组,然后在 javascript(React/Next Js 项目)中对其进行解密。我在php中的加密如下面的代码所示

加密 PHP


$plaintext = "message to be encrypted";
$ivlen = openssl_cipher_iv_length($cipher="AES-128-CBC");
$iv = openssl_random_pseudo_bytes($ivlen);
$ciphertext_raw = openssl_encrypt($plaintext, $cipher, $key, $options=OPENSSL_RAW_DATA, $iv);
$hmac = hash_hmac('sha256', $ciphertext_raw, $key, $as_binary=true);
$ciphertext = base64_encode( $iv.$hmac.$ciphertext_raw );
Run Code Online (Sandbox Code Playgroud)

我在用 Javascript 解密时遇到问题

到目前为止我的代码如下所示

 const baseenc = CryptoJS.enc.Base64.parse(cipher).toString();
  var encrypted = CryptoJS.AES.decrypt(cipher, key, { iv: iv }).toString();
  var plaintext = CryptoJS.enc.Latin1.stringify(encrypted);
Run Code Online (Sandbox Code Playgroud)

任何人都可以显示错误是什么或帮助我获得正确的输出

javascript php encryption aes

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

如何在 Dart 中使用 encrypt 实现 rsa 加密

我有一个用 Koltin 编写的包,我想用 Dart 重写它。我一直在尝试使用encryptpointycastle。但我遇到了问题

我将如何在 Dart 中编写这个实现。

我开始尝试对公钥进行编码 var modulusBytes = base64.decode(publicKey!);

import android.util.Base64

import java.security.KeyFactory
import java.security.NoSuchAlgorithmException
import java.security.PublicKey
import java.security.spec.InvalidKeySpecException
import java.security.spec.X509EncodedKeySpec

import javax.crypto.Cipher



object Crypto {

    private const val PUBLIC_KEY = "MFwwDQYJKoZIhvcNAQEBBQADfafwfegRHqfkBiKGn/rrgrgrgrrgg" +
            "2wkeSokw2OJrCI+d6YGJPrHHx+nmb/Qn885/R01Gw6d7M824qofmCvkCAwEAAQ=="
    private const val ALGORITHM = "RSA"
    private const val CIPHER = "RSA/ECB/PKCS1Padding"

    private fun encrypt(text: String, key: PublicKey): ByteArray? {
        var cipherText: ByteArray? = null

        try {

            // get an RSA cipher object
            val cipher = Cipher.getInstance(CIPHER)

            //init …
Run Code Online (Sandbox Code Playgroud)

encryption android dart kotlin flutter

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

使用简单的 Javascript 加密和解密字符串,无需使用任何外部库

我想创建一个函数来加密字符串,它将字符串缩短为字母数字字符,并创建一个解密函数,它将取回加密的字符串。

\n

这是我参考网上的代码编写的。

\n
function compress(string) {\n  string = unescape(encodeURIComponent(string));\n  var newString = '',\n    char, nextChar, combinedCharCode;\n  for (var i = 0; i < string.length; i += 2) {\n    char = string.charCodeAt(i);\n\n    if ((i + 1) < string.length) {\n\n      \n      nextChar = string.charCodeAt(i + 1) - 31;\n\n      \n      combinedCharCode = char + "" + nextChar.toLocaleString('en', {\n        minimumIntegerDigits: 2\n      });\n\n      newString += String.fromCharCode(parseInt(combinedCharCode, 10));\n\n    } else {\n\n     \n      newString += string.charAt(i);\n    }\n  }\n  return newString;\n}\n\nfunction decompress(string) {\n\n  var newString = '',\n …
Run Code Online (Sandbox Code Playgroud)

javascript encryption algorithm hash

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

如何在Java中实现CryptoJS.AES.encrypt函数?

我正在尝试在 java 中实现crypto-js的以下代码以进行加密

let toEncrypt= "my data";
cryptoJs.AES.encrypt(toEncrypt,"apasswordblabla").toString();
Run Code Online (Sandbox Code Playgroud)

这是我的实现(AES/CBC/PKCS7Padding):

public String encrypt(Map<String,Object> param){
try {
            String toEncrypt= objectMapper.writeValueAsString(param);
            MessageDigest md5 = MessageDigest.getInstance("MD5");
            byte[] saltData = Arrays.copyOfRange(stringToEncrypt.getBytes(StandardCharsets.UTF_8), 8, 16);
            final byte[][] keyAndIV = generateKeyAndIV(32, 16, 1, saltData, "apasswordblabla".getBytes(StandardCharsets.UTF_8), md5);
            SecretKeySpec skeySpec = new SecretKeySpec(keyAndIV[0], "AES");
            IvParameterSpec iv = new IvParameterSpec(keyAndIV[1]);
            Cipher cipher;
            cipher = Cipher.getInstance("AES/CBC/PKCS7Padding",BouncyCastleProvider.PROVIDER_NAME);
            cipher.init(Cipher.ENCRYPT_MODE, skeySpec,iv);
            byte[] base64Encoded = Base64.getEncoder().encode(cipher.doFinal(toEncrypt.getBytes(StandardCharsets.UTF_8)));
            return new String(base64Encoded);
        } catch (NoSuchAlgorithmException | NoSuchPaddingException | IllegalBlockSizeException
                | BadPaddingException | InvalidKeyException
                | JsonProcessingException | NoSuchProviderException …
Run Code Online (Sandbox Code Playgroud)

javascript java encryption aes cryptojs

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