在调用CryptoJS.AES.encrypt/decrypt时,如何处理非标准的密钥长度的AES密钥?
我目前正在使用C#中解密项目的问题,这些项目使用不长128、192或256位的密钥在Cryptojs中进行了加密. CryptoJS允许在加密/解密期间使用"奇数"长度的键,但是C#中的对称算法类(例如RijndaelManaged)不允许此. javascript var key = CryptoJS.enc.Utf8.parse("This key is 160 bits"); // Not 128, 192, or 256 bits, but is allowed var iv = CryptoJS.enc.Hex.parse("101112131415161718191a1b1c1d1e1f"); var result = CryptoJS.AES.encrypt("Encrypt Me!", key, { iv: iv }); // result.ciphertext = 2839aff89d889dd29480b038679fbd6e // or result
4 2024-04-22
编程技术问答社区
兼容C#和javascript的AES加密和解密
我正在尝试在C#和JavaScript中编写两个类,我可以在整个项目中使用它们在数据交换时使用AE进行加密或解密数据. 使用AES在加密结果中嵌入盐(32个字节)和IV(16个字节)(16个字节),在测试时,这两个类别都可以正常工作.将盐和IV添加到混合物中并不会引起很多参考,以使两个平台之间的起作用. c#i使用标准系统. private static readonly int iterations = 1000; public static string Encrypt(string input, string password) { byte[] encrypted; byte[] IV; byte[] Salt = GetSalt(); byte[] Key = CreateKey(password, Salt); using (Aes aesAlg = Aes.C
8 2024-04-18
编程技术问答社区
在C#(.NET)上进行加密和解密
我有代码以Angular加密数据,但我不知道在服务器端如何解密. 角代码 public static getEncryptedInfo(dataString): string { let password = environment.encryptionKey; var text = dataString.toString(CryptoJS.enc.Utf8) var encrypted = CryptoJS.AES.encrypt(text, password).toString(); const encodedComponent = encodeURIComponent(encrypted).toString(); return encodedComponent; } 使用Encryptighkey = 12345 加密为 U2FsdGVkX19klqZyBO7JyNzfxCBxAizFPkVYX%2Bb%2BUNs
6 2024-04-17
编程技术问答社区
使用C#和CryptoJS的不同加密结果
我在服务器应用程序中使用AES加密一些数据,该数据用C#编写.我使用一个预定义的键(32个字节)和IV(16个字节),例如... Key: 81fe1681..6a451c1c IV: e83c..ae76 这是我用来加密数据的C#代码: async Task Encrypt(string privateKey, string pin, byte[] data) { using (var sha = SHA256.Create()) { byte[] keyHash = sha.ComputeHash(Encoding.UTF8.GetBytes($"{privateKey}")); byte[] pinHash = sha.ComputeHash(Encoding.UTF8.GetBytes($"{pin}")); using (Aes aes = Aes.Create())
6 2024-04-14
编程技术问答社区
在Google Apps脚本中使用Crypto-JS-什么是C.lib?
我想在Google Apps脚本中向我们Crypto-JS并将所有源文件复制到我的项目中. 尝试使用其AES加密数据时,我无法正常工作,因为在Google Apps脚本中,aes.js中的以下引用无效: var C_lib = C.lib; 这是我的"假人的javascript"问题(我是JavaScript newbie): - ) 如何将C.lib与Google Apps脚本相关联? 什么是C.lib?我在Google上没有找到任何好的信息. 解决方案 来自core.js: /** * Library namespace. */ var C_lib = C.lib = {}; 看来,包装中的每个文件都使用它,例如: var C_lib = C.lib; var WordArray = C_lib.WordArray; var BlockCipher = C_lib.BlockCipher; 因此,很可能您必须链接core.js如果
16 2024-04-06
编程技术问答社区
如何在javascript中对一个文件(二进制文件,如图片)使用Sha256?
我正在尝试在JavaScript中的文件上执行SHA256.我使用 filereader(html5) 在文件中读取.我在FileReader中使用Readasbinary String功能传递图像文件.然后在filereader.onload函数上,我通过evt.target.result传递到代码(应该能够将下面的代码复制到HTML文件并在Firefox上运行 - 按"整个文件"按钮): #byte_content { margin: 5px 0; max-height: 100px; overflow-y: auto; overflow-x: hidden; } #byte_range { margin-top: 5px; } Read bytes:
14 2024-03-30
编程技术问答社区
使用CryptoJS将64位数字字符串转换为字数组
我想知道是否可以正确地将带有整数数据的字符串转换为cryptojs Word数组? 例子.我可以以相同的方式将" 175950736337895418"转换为单词阵列,以创建17595950736337895418(int value)中的单词阵列. 我有一些代码将整数值转换为Word Array // Converts integer to byte array function getInt64Bytes( x ){ var bytes = []; for(var i = 7;i>=0;i--){ bytes[i] = x & 0xff; x = x>>8; } return bytes; } //converts the byte array to hex string function bytesToHexStr(bytes) { for (var hex = [], i = 0; i
10 2024-03-30
编程技术问答社区
用Javascript签署密钥HMAC SHA1
由于某种原因,我无法从JS中的私钥创建签名.使用Google的在线帮助: https://m4b-url-signer.appspot.com/ url: https://google.maps. com/maps/api/geocode/json?地址= new+york&client = test 示例键(为练习目的伪造) 钥匙:qnade5dtdjkkkzbidtsrigonupc4 = (结果)签名:XDSIH5JAY7KJLGA1K2PWLHTDO1K = 但是,我的JavaScript代码: var keyString = 'QNade5DtdJKKZbidTsrIgONupc4='; console.log(keyString) var urlString = encodeURIComponent('/maps/api/geocode/json?address=New+York&client=test'); console.lo
20 2024-03-27
编程技术问答社区
CryptoJS.enc.Base64.stringify()与普通Base64加密的区别
我试图将以下哈希加密到base64: 6bb984727b8c8c8017207e54b63976dc42ea9d24ad33bd5feeaa66869b650096 需要访问网站的API.该网站使用CryptoJS.enc.Base64.stringify()加密哈希的方法在JavaScript中显示了一个示例脚本. 这种方法的结果是 a7mEcnuMjIAXIH5Utjl23ELqnSStM71f7qpmhptlAJY= 但是,我尝试过的每个在线base64加密工具都会给我以下结果: NmJiOTg0NzI3YjhjOGM4MDE3MjA3ZTU0YjYzOTc2ZGM0MmVhOWQyNGFkMzNiZDVmZWVhYTY2ODY5YjY1MDA5Ng== 我需要在C ++中创建编码的字符串.我还尝试了4种不同的base64encode实现(OPENSL和自定义代码),但是在那里我得到了上述结果,并且API始终回答我的字符串未正确编码. 那么差异
24 2024-03-27
编程技术问答社区
通过crypto-js的base64编码器
我想编码数字. 如何在输出中对base64进行编码? 代码: const CryptoJS = require('crypto-js'); function msg() { return '7543275'; // I want to encrypt this number to character } const msgLocal = msg(); // Encrypt const ciphertext = CryptoJS.AES.encrypt(msgLocal, 'password'); // Decrypt const bytes = CryptoJS.AES.decrypt(ciphertext.toString(), 'password'); const plaintext = bytes.toString(CryptoJS.enc.Utf8); console.log(plaintext); 解决方案 已解决. const Cr
6 2024-03-27
编程技术问答社区
使用CryptoJS解码一个Base64字符串
我正在尝试创建一个简单的网页,其目标是将消息发送到服务器(将与该内容创建文件),然后创建一个链接,并且接收提供的链接的用户将能够请参阅加密值(因为它提供了文件的名称和密钥). 该消息是使用cryptojs aes进行加密的,结果是基本64编码要被解码,仅加密消息的基本64,而加密的消息无需发送到服务器,这是使用JavaScript进行的./p> 我的问题是.我有一条消息,可以说我使用base64编码的" Hello World",它给了我: 1ffffffff5a8ae57 如果我将此值发送到变量,然后只使用该变量,则显示一个结果: // Works ! var test = CryptoJS.enc.Base64.parse("Hello World"); alert(CryptoJS.enc.Base64.stringify(test)); 正常.但是,如果我尝试直接编写文本(或只是做一个tostring(),它不起作用……这也是正常的,因为"测试"变量不
30 2024-03-27
编程技术问答社区
使用CryptoJS与hex-string
我想连接到蓝牙设备.沟通仅通过十六进制.我需要编码16个字节值.结果,我还期望16个字节值.在我的实施中,cryptojs总是返回更长的结果.根据文档,不需要IV. ("所有16个字节数据必须使用当前存储在设备中的客户主密钥进行加密,并使用AES128 CBC加密 密码模式")因此,我将IV设置为0000000000000000000000000000000000,因为Cryptojs似乎需要它.我在做什么错? const CryptoJS = require('crypto-js'); const value = CryptoJS.enc.Hex.parse('5ff58680541c5a5903f4833dfaa4281f'); const key = CryptoJS.enc.Hex.parse('41435231323535552d4a312041757458'); // known master key const ivvar = CryptoJS.enc.Hex
12 2024-03-20
编程技术问答社区
经典ASP中的各种HMAC_SHA256函数给出了不同的结果
以某种方式我需要在经典ASP中生成一个哈希,这等同于PHP的Callud函数的输出: $hash = hash_hmac('SHA256', $message, pack('H*', $secret)); 其中$message = 'stackoverflow'; $secret = '1234567890ABCDEF';.我在网上尝试了很多方法,但没有一个与PHP结果相匹配: bcb3452cd48c0f9048e64258ca24d0f3399563971d4a5dcdc531a7806b059e36 方法1:使用dvim_brix_crypto-js-master_vb.asp在线(使用crytojs) Function mac256(ent, key) Dim encWA Set encWA = ConvertUtf8StrToWordArray(ent) Dim keyWA Set keyWA = ConvertUtf
8 2024-03-16
编程技术问答社区
JavaScript。如何像C#一样生成Rfc2898DeriveBytes?
编辑:在评论中的讨论中,让我澄清一下,这将发生在SSL后面的服务器端.我不打算向客户端公开Hashed密码或哈希方案. 假设我们具有带有默认表的现有ASP.NET身份数据库(ASPNET_USERS,ASPNET_ROLES等).根据我的理解,密码哈希算法使用SHA256并将盐 +(哈希密码)存储为基本64编码字符串. 编辑:此假设不正确,请参见下面的答案. 我想复制microsoft.aspnet.Identity.crypto class'假设密码是欢迎1 ,其ASP.NET hashed密码为 adoetxqgcnwcuuc5uoavivmvjwjanoa/lovy0e4xcyuhifj7dfj7dfsy0dfsy0dfsy0id 到目前为止 c#实施或多或少地做到这一点: var salt = new byte[SaltSize]; Buffer.BlockCopy(hashedPasswordBytes, 1, salt, 0, SaltSize); var
10 2024-03-12
编程技术问答社区
向Crypto-js提供价值
我有cyryptojs在工作(作为服务),但我认为我没有观察到最佳实践. import { Injectable } from '@angular/core'; import * as CryptoJS from "crypto-js"; @Injectable() export class EncryptionService { constructor() { } secretKey: string = "fnord"; encrypt(jsonObj) { return CryptoJS.AES.encrypt(JSON.stringify(jsonObj), this.secretKey); } decrypt(data) { if (data !==null && data.length > 0) { var bytes = CryptoJS.AES.decry
10 2024-02-24
编程技术问答社区
Angular CryptoJs在Node JS CryptoJS中加密不解密
这是我的anguarjs代码 $httpProvider.defaults.headers.common['key'] = CryptoJS.AES.encrypt('', '=', { mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7, keySize: '256 / 32' }); 节点JS代码将使用,算法为AES-256-CBC,与Angular一样相同. app.all('*', function (req, res, next) { var headers = JSON.parse(JSON.stringify(req.headers)); var decipher = crypto.createDecipher(algorithm, key); decipher.setAutoPad
16 2024-02-24
编程技术问答社区
在golang中加密的AES/CBC,在angular中解密的CryptoJS
我正在尝试使用PKCS7填充的AES CBC模式将数据加密并在Angular中加密. 但是,当我尝试以角度解密数据时,它不会返回任何内容 GO代码: package main import ( "bytes" "crypto/aes" "crypto/cipher" "crypto/rand" "encoding/base64" "fmt" "io" ) func main() { secret := []byte("28cEVB4BUE7GKNwjuRhN3szK5E3!&q*y") data := []byte("Test") encResult, err := Encrypt(data, secret) fmt.Println("encResult", encResult) fmt.Println("enc err", err) // encrypted :=
10 2024-02-22
编程技术问答社区
ASP.net Core中的加密和Angular中的解密
我在" ASP.NET核心中的加密和Angular中的解密"中面临问题. 我想从我的be发送敏感信息,以便我试图添加加密和解密. 我的ASP加密代码是: public static string EncryptString(string key, string plainText) { byte[] iv = new byte[16]; byte[] array; using (Aes aes = Aes.Create()) { aes.Key = Encoding.UTF8.GetBytes(key); aes.IV = iv; aes.Padding = PaddingMode.PKCS7; aes.Mode = CipherMode
14 2024-02-21
编程技术问答社区
在angular 2项目中导入crypto-js(用angular-cli创建)。
我正在尝试在我的Angular2项目中导入加密J. 我遵循了几个问题,还 Angular-Cli指南,但最后我仍然有错误找不到模块'crypto-js' 我尝试的是: npm install crypto-js --save 和 typings install dt~crypto-js --global --save 然后我修改了文件 angular-cli-build.js var Angular2App = require('angular-cli/lib/broccoli/angular2-app'); module.exports = function(defaults) { return new Angular2App(defaults, { vendorNpmFiles: [ 'systemjs/dist/system-polyfills.js', 'systemjs/dist/system.sr
16 2024-02-21
编程技术问答社区