我有公钥字符串:
----- BEGIN PUBLIC KEY ----- MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAvL + UegLeWJ1KLh6WEfbW KGCA + vj4G / k6iIz9OWCb9t3maokH +盎司/ bNB8PGlwmH2aCBmqXPv9p3hexcujUsNC jFahCAz84tT7M4rR2GGwVWyY9PJ98rZbbvD9PLG380cqZs + vlwYT16bv5t + braiJ WhrAgwKF0eZyID6DzRnDCG7HbKr6sL1h7QD1WHBljplV + TinIeWoyBIWPJdqEAUs js1wXWkFPIb5x0W7kAzWc0 + oH3gDD3kGv + T / p2DsbUuOYYSZgZB8Lx1AKiWVRERt 90tWH9uytulSxvwoONBriasH7VlSXyi5ve6AA4 + FG / HExiPNN5Lh34kNP6l5CTc + yaCDHewYQeqDdgP + GurgdV9ZCM4P7c6Ky7GZBs8sAAAXevch8ggf9XGjEsLl ++ C7 G5E4FO6kNmloL3nogRLJ8P8w / s53Y0g4ih2hdJFfqJ3l / fIolvldR17nA3oZBHTo OuOSR / JK1KWvkl / C9I1lHO70zrgvr7wtpW2YbdBHvvTu5aTK8oIMNoZ8lhWdKFYG aiQWvfsM / IPXbFKQbDQachn5ZHYLc4wXi1uBHYnPCjZM3Fq6wc1oSnRZ77CI8crf To7TJFfXO20VtSdwUq0SCrQ1wxttK8uH22c / YUXPld + K6fW13tspWz653gnw5FPd 8bFQQByVkrcihbyuXWjUSMkCAwEAAQ == ----- END PUBLIC KEY -----
并想用它来加密消息,但是当我运行下面的代码时,它给了我以下错误:
警告:openssl_public_encrypt(): key 参数不是有效的公钥 i ...
<?php
$unformatted_pub= "-----BEGIN PUBLIC KEY----- MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAvL+UegLeWJ1KLh6WEfbW kGcA+vj4G/k6iIz9OWCb9t3maokH+Oz/bNB8PGlwmH2aCBmqXPv9p3hexcujUsNC …Run Code Online (Sandbox Code Playgroud) 我正在尝试修改一个示例RinjaelManaged 加密类(请参阅:加密和解密 C# 中的字符串)以改为使用 AesCryptoServiceProvider,以便它可以在设置为仅使用 FIPS 兼容算法的计算机上运行。
然而,这似乎不像换出类名那么简单,因为我现在收到关于初始化向量长度的错误。我意识到已经有几个关于此的问题,但是在我的特定用例中尝试使用其他问题的答案时没有成功。
我需要改变什么才能使 IV 长度与需要的相匹配?
namespace Encryption
{
#region Using Statements
using System;
using System.IO;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
#endregion
public class EncryptionHelper
{
#region Private Fields
// This constant determines the number of iterations for the password bytes generation function.
private const int DerivationIterations = 1000;
// This constant is used to determine the keysize of the encryption algorithm in bits.
// We divide this by 8 …Run Code Online (Sandbox Code Playgroud) 如何将我的消息摘要转换为纯文本(取回原始消息)。我使用以下函数计算消息摘要。SHA1 代码可以在https://github.com/tylabs/quicksand_lite/blob/master/sha1.c 中找到我找不到可以为我进行转换的函数。有没有什么算法可以做到这一点?
我也在尝试解密和加密消息,这就是问题的来源。
int main()
{
char qbits[5];
char rbits[5];
char ID[SIZE]; //User ID
char message[SIZE]; //User message
char shamessage[SIZE]; //The input message digest(sha1 result)
char xor_result[SIZE]; //Sender XOR result---V
char xor_result_receiver[SIZE]; //Receiver XOR result
memset(xor_result, 0, sizeof(char)*SIZE);
memset(xor_result_receiver, 0, sizeof(char)*SIZE);
pairing_t pairing; //The pair of bilinear map
element_t P, Ppub, s, U, Qid, Sid;
mpz_t messagehash;
mpz_init(messagehash);
printf("\n############SETUP############\n");
printf("Please enter rbits:");
scanf("%[0-9]", rbits);
getchar();
printf("\nPlease enter qbits:");
scanf("%[0-9]", qbits);
getchar();
setup_sys(atoi(rbits), atoi(qbits), P, Ppub, pairing, s); …Run Code Online (Sandbox Code Playgroud) 是否存在可以接收 x 个字符长的明文并返回一个小于 x 个字符长的密文,但可以解密回原始明文的密码?如果密文的字母比明文的字母大得多怎么办?
我正在尝试使用正常工作的 system.Security.Cryptography 加密密码 这是代码 (.Net)
if (clearText == null)
{
clearText = "";
}
string EncryptionKey = "****";
byte[] clearBytes = Encoding.Unicode.GetBytes(clearText);
using (Aes encryptor = Aes.Create())
{
Rfc2898DeriveBytes pdb = new Rfc2898DeriveBytes(EncryptionKey, new byte[] { 0x49, 0x76, 0x61, 0x6e, 0x20, 0x4d, 0x65, 0x64, 0x76, 0x65, 0x64, 0x65, 0x76 });
encryptor.Key = pdb.GetBytes(32);
encryptor.IV = pdb.GetBytes(16);
using (MemoryStream ms = new MemoryStream())
{
using (CryptoStream cs = new CryptoStream(ms, encryptor.CreateEncryptor(), CryptoStreamMode.Write))
{
cs.Write(clearBytes, 0, clearBytes.Length);
cs.Close();
}
clearText = Convert.ToBase64String(ms.ToArray()); …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 aws-sdk 和 NodeJs 解密一些使用 AWS KMS 加密的文本。我今天开始使用 NodeJs,所以我是它的新手。我用 Java 解决了这个问题,但我正在尝试将现有的 Alexa 技能从 Java 迁移到 NodeJs。
解密的代码是:
function decrypt(buffer) {
const kms = new aws.KMS({
accessKeyId: 'accessKeyId',
secretAccessKey: 'secretAccessKey',
region: 'eu-west-1'
});
return new Promise((resolve, reject) => {
let params = {
"CiphertextBlob" : buffer,
};
kms.decrypt(params, (err, data) => {
if (err) {
reject(err);
} else {
resolve(data.Plaintext);
}
});
});
};
Run Code Online (Sandbox Code Playgroud)
当我使用正确的 CiphertextBlob 运行此代码时,出现此错误:
Promise {
<rejected> { MissingRequiredParameter: Missing required key 'CiphertextBlob' in params
at ParamValidator.fail (D:\Developing\abono-transportes-js\node_modules\aws-sdk\lib\param_validator.js:50:37) …Run Code Online (Sandbox Code Playgroud) 非常密切相关:如何在没有 SecureString 的情况下保护字符串?
也密切相关:我什么时候需要 .NET 中的 SecureString?
极其密切相关(OP 正在尝试实现非常相似的东西):C# & WPF - Using SecureString for a client-side HTTP API password
.NET Framework 有一个名为SecureString 的类。但是,即使是 Microsoft 也不再建议将其用于新的开发。根据第一个链接的问答,至少有一个原因是该字符串无论如何都会以明文形式存在于内存中至少一段时间(即使时间很短)。至少有一个答案还扩展了一个论点,即如果他们无论如何都可以访问服务器的内存,那么实际上安全性无论如何都可能会被击中,所以它不会帮助你。(第二个链接的问答暗示甚至讨论过将其从 .NET Core 中完全删除)。
话虽如此,微软的文档SecureString不建议更换,并且关于链接问答的共识似乎是这种措施无论如何都不会那么有用。
我的应用程序是一个 ASP.NET Core 应用程序,它广泛使用了对使用HttpClient该类的外部供应商的 API 调用。在通常推荐的最佳做法的HttpClient是使用单个实例,而不是每个调用创建一个新的实例。
但是,我们的供应商要求所有 API 调用都包含我们的 API 密钥作为具有特定名称的标头。我目前安全地存储密钥,在 中检索它Startup.cs,并将其添加到我们HttpClient实例的标头中。
不幸的是,这意味着我的 API 密钥将在应用程序的整个生命周期中以明文形式保存在内存中。我发现这对于服务器上的 Web 应用程序来说尤其令人不安;尽管服务器由企业 IT 维护,但我一直被教导将企业网络视为半敌对环境,在这种情况下,不要纯粹依赖企业防火墙来确保应用程序安全。
对于此类情况,Microsoft 是否有推荐的最佳实践?这是他们反对使用的建议的潜在例外SecureString吗?(具体如何工作是一个单独的问题)。或者其他问答中的答案是否真的正确说我不应该担心像这样存在于内存中的明文字符串?
注意:根据对这个问题的回答,我可能会发布一个关于是否可以将类似的内容SecureString用作HttpClient标题的一部分的后续问题。或者我是否必须做一些棘手的事情,例如在使用之前填充标题,然后立即将其从内存中删除?(虽然这会给并发调用带来绝对的噩梦)。如果人们认为我应该做这样的事情,我很乐意为此创建一个新问题。
security encryption dotnet-httpclient .net-core asp.net-core
需要执行以下步骤:
#!/bin/sh
a=$(echo MDkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDIgADAoR0WUZBTAkZv0Syvt+g5wGpb/HYHh22zAxCNP+ryTQ=|base64 -d)
b="chirp$a"
echo $b
echo -n $b | sha256sum
Run Code Online (Sandbox Code Playgroud)
我得到的值是:f62e19108cfb5a91434f1bba9f5384f9039857743aa2c0707efaa092791e4420
但是期望值是:6a29cb4....
我错过了什么吗?
我正在尝试使用 RC4 在 Go 中加密/解密一些数据。我发现 Go 在 crypto/rc4 包中提供了 rc4 算法。我尝试使用该包加密/解密数据,但密文和解密的明文不是我所期望的。
我RC4在线工具像比较这个,但我敢肯定,Go的RC4包有一些问题。因为在我用 Go rc4 加密明文并解密密文后,解密的明文'不是我加密的。我应该找其他图书馆吗?
我运行的代码是这样的。
package main
import (
"crypto/rc4"
"fmt"
"log"
)
func main() {
c, err := rc4.NewCipher([]byte("dsadsad"))
if err != nil {
log.Fatalln(err)
}
src := []byte("asdsad")
dst := make([]byte, len(src))
fmt.Println("Plaintext: ", src)
c.XORKeyStream(dst, src)
c.XORKeyStream(src, dst)
fmt.Println("Ciphertext: ", dst)
fmt.Println("Plaintext': ", src)
}
Run Code Online (Sandbox Code Playgroud)
输出是这样的
Plaintext: [97 115 100 115 97 100]
Ciphertext: [98 41 227 117 93 79]
Plaintext': [111 154 128 …Run Code Online (Sandbox Code Playgroud) encryption ×10
cryptography ×4
c# ×2
security ×2
sha ×2
.net-core ×1
aes ×1
aes-gcm ×1
amazon-kms ×1
asp.net ×1
asp.net-core ×1
aws-lambda ×1
bash ×1
c ×1
go ×1
hash ×1
node.js ×1
php ×1
python-3.x ×1
rc4-cipher ×1