首页 > 解决方案 > 我在 c# 中使用 rijndaelmanaged 加密图像文件,我想用加密 js 以角度解密它

问题描述

我有一个用 C# 解密图像文件的示例,但我想以角度解密这个图像,我从服务中的 URL 获取图像

getImage(imageUrl: string): Observable<Blob> {
  return this.http.get(imageUrl, { responseType: 'blob'});
}  

我的角度解密图像代码:

decrypt(url : string){
  var key = "Testtest";
  console.log(key);
  this.examService.getImageData(url)
  .subscribe(file => {
    var reader = new FileReader();
      reader.onload = () => {
        var decrypted = CryptoJS.AES.decrypt(reader.result, key,{
          keySize: 128 / 8,
          iv: key,
          mode: CryptoJS.mode.ECB,
          padding: CryptoJS.pad.Pkcs7
      });
          var fileDec = new Blob([decrypted], { type : file.type});                                 
          var a = document.createElement("a");
           var url = window.URL.createObjectURL(fileDec);
           var filename = "test";
           a.href = url;
           a.download = filename;
           a.click();
           window.URL.revokeObjectURL(url);
      };
      reader.readAsDataURL(file);
 });
}

我有一个用于在 C# 中解密图像的代码,它正在工作,但我必须以角度实现此代码:

string contents = File.ReadAllText(file);
string psw = "Testtest";
string ImagesAdPath = "\\Image\\f ";
string ImagesAdDecPath = "\\Image\\f";                
var UE = new UnicodeEncoding();
byte[] key = UE.GetBytes(psw);
string tempFile = ImagesAdDecPath  + file.Substring(file.LastIndexOf("\\"));
FileStream fsCrypt = new FileStream(tempFile, FileMode.Create);
RijndaelManaged RMCrypto = new RijndaelManaged();
CryptoStream cs = new CryptoStream(fsCrypt, RMCrypto.CreateDecryptor(key, key), CryptoStreamMode.Write);

FileStream fsIn = new FileStream(file, FileMode.Open);
int data;
while ((data = fsIn.ReadByte()) != -1)
   cs.WriteByte((byte)data);

   cs.Flush();
   cs.Close();
   fsIn.Close();
   fsCrypt.Close();

标签: javascriptc#angularencryption

解决方案


推荐阅读