GVKun编程网logo

jQuery 中的客户端加密和 PHP 中的解密(jquery加密数据)

5

在本文中,我们将为您详细介绍jQuery中的客户端加密和PHP中的解密的相关知识,并且为您解答关于jquery加密数据的疑问,此外,我们还会提供一些关于.Net中的文件加密和Python中的解密|AE

在本文中,我们将为您详细介绍jQuery 中的客户端加密和 PHP 中的解密的相关知识,并且为您解答关于jquery加密数据的疑问,此外,我们还会提供一些关于.Net 中的文件加密和 Python 中的解密 | AES加密、5、PHP-将浮点数转为整数 php 浮点数比较 php 浮点数精度 php 浮点数格式、AES 加密 - Dart 中的解密 - Flutter、C# 中的 AES/Rijndael-解密,JavaScript 中的解密(节点)的有用信息。

本文目录一览:

jQuery 中的客户端加密和 PHP 中的解密(jquery加密数据)

jQuery 中的客户端加密和 PHP 中的解密(jquery加密数据)

如何解决jQuery 中的客户端加密和 PHP 中的解密

我正在尝试创建一个函数,在该函数中我从客户端加密字符串并在 PHP 端解密。主要用于登录时。 我展示了 CryptoJs 库,但很难理解谁在 PHP 中解码,也有很多线程与此相同,但 PHP 中没有解密。 我编写了一个代码,但它不起作用,请帮助我如何进行客户端加密和服务器端 PHP 解密。

  1. var message = "MyText";
  2. var key = "01234567890123456789012345678901";
  3. var encrypted = CryptoJS.AES.encrypt(message,key);
  4. var decrypted = CryptoJS.AES.decrypt(encrypted,key);
  5. $(''#1'').text("Encrypted: " + encrypted);
  6. $(''#2'').text("Decrypted: " + decrypted.toString(CryptoJS.enc.Utf8));
  1. <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
  2. <script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.0.0/crypto-js.min.js"></script>
  3. <div id="1"></div>
  4. <div id="2"></div>

PHP

  1. function myCrypt($value,$key,$iv)
  2. {
  3. $encrypted_data = openssl_encrypt($value,''aes-256-cbc'',OPENSSL_RAW_DATA,$iv);
  4. return base64_encode($encrypted_data);
  5. }
  6. function myDecrypt($value,$iv)
  7. {
  8. $value = base64_decode($value);
  9. $data = openssl_decrypt($value,$iv);
  10. return $data;
  11. }
  12. $valTxt = "MyText";
  13. $key = "01234567890123456789012345678901"; // 32 bytes
  14. $vector = "1234567890123412"; // 16 bytes
  15. $encrypted = myCrypt($valTxt,$vector);
  16. $decrypted = myDecrypt($encrypted,$vector);
  17. print $encrypted . "\\n";
  18. print $decrypted . "\\n";

.Net 中的文件加密和 Python 中的解密 | AES加密

.Net 中的文件加密和 Python 中的解密 | AES加密

如何解决.Net 中的文件加密和 Python 中的解密 | AES加密

大家好,我正在尝试在 .Net 中加密并在 Python 中解密。 我试过这样做,我可以在 .Net 中加密,但是在 python 中解密时我遇到了一些错误。 我是新手,很抱歉我的编码不好。

这里是 .Net 中的加密

public static void Main(string[] args)
    {
    

        try
        {
            using FileStream myStream = new FileStream("file.pdf",FileMode.OpenorCreate);
  
            using Aes aes = Aes.Create();
            var textencoder = new System.Text.UTF8Encoding();

            aes.Key = textencoder.GetBytes(''16bytesEncryption'');
            aes.IV = textencoder.GetBytes(''1234567812345678'');
            aes.Mode = CipherMode.CBC;
            aes.Padding = PaddingMode.PKCS7;

            byte[] iv = aes.IV;
            myStream.Write(iv,iv.Length);
 
            using CryptoStream cryptStream = new CryptoStream(
                myStream,aes.CreateEncryptor(),CryptoStreamMode.Write);
 
    
            sWriter.WriteLine("Hello World!");

            cryptStream.FlushFinalBlock();

         
            Console.WriteLine("The file was encrypted.");
        }
        catch
        {
      
            Console.WriteLine("The encryption Failed.");
            throw;
        }
    }


这里是 Python 中的解密


key = b''16bytesEncryption''
iv = b''1234567812345678''


with open(''file.pdf'',''rb'') as fin:
    fsz = struct.unpack(''<Q'',fin.read(struct.calcsize(''<Q'')))[0]

    aes = AES.new(key,AES.MODE_CBC,iv)

    with open("outfile.pdf",''wb+'') as fout:
        while True:
            data = fin.read(16)
            n = len(data)
            if n == 0:
                break
            decd = aes.decrypt(data) #<---Error on this line
            n = len(decd)
            if fsz > n:
                fout.write(decd)
         

解密时出错->

Traceback (most recent call last):
File "C:/Users/Lenovo/PycharmProjects/pythonProject/demo.py",line 18,in <module>
desc = aes.decrypt(data)

File "C:\\Users/Lenovo\\PycharmProjects\\pythonProject\\venu\\lib\\site-packages\\Crypto\\Cipher\\_ mode_cbc.py",raise ValueError("Data must be padded to %d byte boundary in CBC mode" % self.block size) 
ValueError: Data must be padded to 16 byte boundary in CBC mode

Process finished with exit code 1

5、PHP-将浮点数转为整数 php 浮点数比较 php 浮点数精度 php 浮点数格式

5、PHP-将浮点数转为整数 php 浮点数比较 php 浮点数精度 php 浮点数格式

1、使用强制类型转换

首先PHP支持如下所示的数据类型:

<span>1. </span>Integer    (整数)
<span>2. </span>Float      (浮点数)
<span>3. </span>String     (字符串)
<span>4. </span>Boolean    (布尔值)
<span>5. </span>Array      (数组)
<span>6. </span>Object     (对象)
登录后复制

此外还有两个特殊的类型:NULL(空)、resource(资源)。

注:
1. 没有被赋值、已经被重置或者被赋值为特殊值NULL的变量就是NULL类型的变量。
2. 特定的内置函数(例如数据库函数)将返回resource类型的变量。

接着可以使用类似C语言的强制类型转换,例如

<span><?php </span><span>$a</span>=<span>6.66666</span>;
<span>$b</span>=(integer)<span>$a</span>;
<span>echo</span><span>$b</span>;</span>
登录后复制

将输出一个6,直接舍去了小数部分

立即学习“PHP免费学习笔记(深入)”;

2、使用float floor ( float value) 函数

舍去法取整,返回不大于 value 的下一个整数,将 value 的小数部分舍去取整。floor() 返回的类型仍然是 float,因为float 值的范围通常比 integer 要大。

echo <span>floor</span>(<span>4.3</span>);   <span>// 输出4 </span>
echo <span>floor</span>(<span>9.999</span>); <span>// 输出9</span>
登录后复制

3、使用float ceil ( float value) 函数

进一法取整,返回不小于 value 的下一个整数,value 如果有小数部分则进一位。ceil() 返回的类型仍然是 float,因为float 值的范围通常比 integer 要大。

echo <span>ceil</span>(<span>4.3</span>);    <span>// 输出5 </span>
echo <span>ceil</span>(<span>9.999</span>);  <span>// 输出10</span>
登录后复制

4、使用float round ( float val [, int precision])函数

对浮点数进行四舍五入,返回将 val 根据指定精度 precision(十进制小数点后数字的数目)进行四舍五入的结果。precision 也可以是负数或零(默认值)。

echo <span>round</span>(<span>3.4</span>);         <span>// 输出3 </span>
echo <span>round</span>(<span>3.5</span>);         <span>// 输出4 </span>
echo <span>round</span>(<span>3.6</span>);         <span>// 输出4 </span>
echo <span>round</span>(<span>3.6</span>, <span>0</span>);      <span>// 输出4 </span>
echo <span>round</span>(<span>1.95583</span>, <span>2</span>);  <span>// 输出1.96 </span>
echo <span>round</span>(<span>1241757</span>, -<span>3</span>); <span>// 输出1242000 </span>
echo <span>round</span>(<span>5.045</span>, <span>2</span>);    <span>// 输出5.04 </span>
echo <span>round</span>(<span>5.055</span>, <span>2</span>);    <span>// 输出5.06</span>
登录后复制
'').addClass(''pre-numbering'').hide(); $(this).addClass(''has-numbering'').parent().append($numbering); for (i = 1; i '').text(i)); }; $numbering.fadeIn(1700); }); });

以上就介绍了5、PHP-将浮点数转为整数,包括了php,浮点数方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

AES 加密 - Dart 中的解密 - Flutter

AES 加密 - Dart 中的解密 - Flutter

如何解决AES 加密 - Dart 中的解密 - Flutter

我在商店中有一个使用 api AES 加密的应用程序,我正在尝试将该应用程序移植到 Flutter。我被困在加密/解密部分。我无法更改 api 中的加密,因为它是实时的。

我尝试过 Encrypt、aes_crypt、pointycastle 软件包。还是卡住了。不知道我错过了什么。我在这些包中找不到 IvParameterSpecSecretKeySpec("AES/CBC/PKCS5Padding") 选项。

这是我在 android 应用中使用的 CryptoHelper java 类。

package com.example.secureApp;

import android.util.Base64;
import java.security.NoSuchAlgorithmException;
import javax.crypto.Cipher;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;

public class CryptoHelper {
    String keyvalue;
    private final IvParameterSpec ivSpec;
    private final SecretKeySpec keySpec;
    private Cipher cipher;
    private final static String ivKey = "912QWA56CFB3SA3F"; // DUMMY 16 char secret key

    public CryptoHelper() {
        keyvalue = "d2AQuZZDfTIlZeXW"; // DUMMY 16 char secret key
        ivSpec = new IvParameterSpec(ivKey.getBytes());
        keySpec = new SecretKeySpec(keyvalue.getBytes(),"AES");
        try {
            cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
        } catch (NoSuchAlgorithmException | NoSuchPaddingException e) {
            e.printstacktrace();
        }
    }

    public static String encrypt(String valuetoEncrypt) throws Exception {
        CryptoHelper enc = new CryptoHelper();
        return Base64.encodetoString(enc.encryptInternal(valuetoEncrypt),Base64.DEFAULT);
    }

    public static String decrypt(String valuetoDecrypt) throws Exception {
        CryptoHelper enc = new CryptoHelper();
        return new String(enc.decryptInternal(valuetoDecrypt));
    }

    private byte[] encryptInternal(String text) throws Exception {
        if (text == null || text.length() == 0) {
            throw new Exception("Empty string");
        }
        byte[] encrypted;
        try {
            cipher.init(Cipher.ENCRYPT_MODE,keySpec,ivSpec);
            encrypted = cipher.doFinal(text.getBytes());
        } catch (Exception e) {
            throw new Exception("[encrypt] " + e.getMessage());
        }
        return encrypted;
    }

    private byte[] decryptInternal(String code) throws Exception {
        if (code == null || code.length() == 0) {
            throw new Exception("Empty string");
        }
        byte[] decrypted;
        try {
            cipher.init(Cipher.DECRYPT_MODE,ivSpec);
            decrypted = cipher.doFinal(Base64.decode(code,Base64.DEFAULT));
        } catch (Exception e) {
            throw new Exception("[decrypt] " + e.getMessage());
        }
        return decrypted;
    }
}

解决方法

按照 @Yash Kadiya 的建议,我选择了平台特定代码。

在这里发布,快乐编码!:

颤动

import ''dart:convert'';
import ''dart:io'';

import ''package:flutter/material.dart'';
import ''package:flutter/services.dart'';
import ''package:get/get.dart'';

void main() async {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return GetMaterialApp(
      title: ''Secure App'',theme: ThemeData(
        primarySwatch: Colors.blue,),home: HomePage(),);
  }
}

class HomePage extends StatefulWidget {
  @override
  _HomePageState createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {

  String encryptedData = '''';
  String decryptedData = '''';

  static const encryptionChannel = const MethodChannel(''enc/dec'');

  Future<void> encryptData(String encrypted,String key) async {
    try {
      var result = await encryptionChannel.invokeMethod(
        ''encrypt'',{
          ''data'': jsonString,''key'': key,},);
      print(''RETURNED FROM PLATFORM'');
      print(result);
      setState(() {
        encryptedData = result;
      });
    } on PlatformException catch (e) {
      print(''${e.message}'');
    }
  }

  Future<void> decryptData(String encrypted,String key) async {
    try {
      var result = await encryptionChannel.invokeMethod(''decrypt'',{
        ''data'': encrypted,});
      print(''RETURNED FROM PLATFORM'');
      print(result);
      setState(() {
        decryptedData = result;
      });
    } on PlatformException catch (e) {
      print(''${e.message}'');
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,crossAxisAlignment: CrossAxisAlignment.center,children: [
            MaterialButton(
              child: Text(''Encrypt Data''),onPressed: () {
                encryptData(''data to be encrypted'',''16 character long key'');
              },MaterialButton(
              child: Text(''Decrypt Data''),onPressed: () {
                decryptData(''data to be decrypted'',''16 character long key'');
                // same key used to encrypt
              },Text(encryptedData),Text(decryptedData),],);
  }
}

安卓

MainActivity.kt

package com.example.secureapp;

import android.util.Log
import io.flutter.embedding.android.FlutterActivity
import io.flutter.embedding.engine.FlutterEngine
import io.flutter.plugin.common.MethodChannel

class MainActivity: FlutterActivity() {
    private val CHANNEL = "enc/dec";

    override fun configureFlutterEngine(flutterEngine: FlutterEngine) {
        super.configureFlutterEngine(flutterEngine)
        MethodChannel(flutterEngine.dartExecutor.binaryMessenger,CHANNEL).setMethodCallHandler{call,result ->
            if(call.method.equals("encrypt")){
                val data = call.argument<String>("data")
                val key = call.argument<String>("key")
                val cipher = CryptoHelper.encrypt(data,key)
                result.success(cipher)
            }else if(call.method.equals("decrypt")){
                val data = call.argument<String>("data")
                val key = call.argument<String>("key")
                val jsonString = CryptoHelper.decrypt(data,key)
                result.success(jsonString)
            }else{
                result.notImplemented()
            }
        }
    }
}

CryptoHelper.java

package com.example.secureapp;

import android.util.Base64;
import android.util.Log;
import java.security.NoSuchAlgorithmException;
import javax.crypto.Cipher;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;

public class CryptoHelper {
    static String keyValue;
    private final IvParameterSpec ivSpec;
    private final SecretKeySpec keySpec;
    private Cipher cipher;
    private final static String ivKey = "RF22SW76BV83EDH8"; //16 char secret key

    public CryptoHelper() {
        ivSpec = new IvParameterSpec(ivKey.getBytes());
        keySpec = new SecretKeySpec(keyValue.getBytes(),"AES");
        try {
            cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
        } catch (NoSuchAlgorithmException | NoSuchPaddingException e) {
            e.printStackTrace();
        }
    }

    public static String encrypt(String valueToEncrypt,String key) throws Exception {
        keyValue = key;
        CryptoHelper enc = new CryptoHelper();
        return Base64.encodeToString(enc.encryptInternal(valueToEncrypt),Base64.DEFAULT);
    }

    public static String decrypt(String valueToDecrypt,String key) throws Exception {
        keyValue = key;
        CryptoHelper enc = new CryptoHelper();
        return new String(enc.decryptInternal(valueToDecrypt));
    }

    private byte[] encryptInternal(String text) throws Exception {
        if (text == null || text.length() == 0) {
            throw new Exception("Empty string");
        }
        byte[] encrypted;
        try {
            cipher.init(Cipher.ENCRYPT_MODE,keySpec,ivSpec);
            encrypted = cipher.doFinal(text.getBytes());
        } catch (Exception e) {
            throw new Exception("[encrypt] " + e.getMessage());
        }
        return encrypted;
    }

    private byte[] decryptInternal(String code) throws Exception {
        if (code == null || code.length() == 0) {
            throw new Exception("Empty string");
        }
        byte[] decrypted;
        try {
            cipher.init(Cipher.DECRYPT_MODE,ivSpec);
            decrypted = cipher.doFinal(Base64.decode(code,Base64.DEFAULT));
        } catch (Exception e) {
            throw new Exception("[decrypt] " + e.getMessage());
        }
        return decrypted;
    }
}

IOS

在 ios 端使用 CryptoSwift

Podfile(将此添加到 podfile)

  pod ''CryptoSwift''

然后运行pod install

AppDelegate.swift

import UIKit
import Flutter

@UIApplicationMain
@objc class AppDelegate: FlutterAppDelegate {
    override func application(
        _ application: UIApplication,didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
    ) -> Bool {
        
        let controller : FlutterViewController = window?.rootViewController as! FlutterViewController
        
        let encryptionChannel = FlutterMethodChannel(name: "enc/dec",binaryMessenger: controller.binaryMessenger)
        encryptionChannel.setMethodCallHandler({
          [weak self] (call: FlutterMethodCall,result: FlutterResult) -> Void in
          // Note: this method is invoked on the UI thread.
            if(call.method == "encrypt"){
                guard let args = call.arguments as? [String : Any] else {return}
                let data = args["data"] as! String
                let key = args["key"] as! String
                let encryptedString = CryptoHelper.encrypt(dataFromFlutter: data,keyFromFlutter: key)
                self?.encrypt(result: result,encrypted: encryptedString!)
                return
            }else if(call.method == "decrypt"){
                guard let args = call.arguments as? [String : Any] else {return}
                let data = args["data"] as! String
                let key = args["key"] as! String
                let decryptedString = CryptoHelper.decrypt(dataFromFlutter: data,keyFromFlutter: key)
                self?.decrypt(result: result,decrypted: decryptedString!)
                return
            }else{
                result(FlutterMethodNotImplemented)
                return
            }
        })

        GeneratedPluginRegistrant.register(with: self)
        return super.application(application,didFinishLaunchingWithOptions: launchOptions)
    }
    
    private func encrypt(result: FlutterResult,encrypted: String) {
        result(encrypted)
    }
    
    private func decrypt(result: FlutterResult,decrypted: String) {
        result(decrypted)
    }
    
}

CryptoHelper.swift

import Foundation
import CryptoSwift

var keyValue :String!

class CryptoHelper{
    private static let iv = "RF22SW76BV83EDH8";
    // ENC
    public static func encrypt(dataFromFlutter :String,keyFromFlutter :String) -> String? {
        do{
            let encrypted: Array<UInt8> = try AES(key: keyFromFlutter,iv: iv,padding: .pkcs5).encrypt(Array(dataFromFlutter.utf8))
            return encrypted.toBase64()
        }catch{
            return "DATA ERROR"
        }
    }
    
    // DEC
    public static func decrypt(dataFromFlutter :String,keyFromFlutter :String) -> String? {
        do{
            let data = Data(base64Encoded: dataFromFlutter)
            let decrypted = try AES(key: keyFromFlutter,padding: .pkcs5).decrypt(data!.bytes)
            return String(data: Data(decrypted),encoding: .utf8)
        }catch{
            return "DATA ERROR"
        }
    }
}

C# 中的 AES/Rijndael-解密,JavaScript 中的解密(节点)

C# 中的 AES/Rijndael-解密,JavaScript 中的解密(节点)

正如所指出的,解决方案是将 unpadding 更改为 16 字节并从缓冲区解密:

    const decryptedPadded = Buffer.from(decipher.decrypt(encryptedFile,128,iv));
    const decrypted = padder.unpad(decryptedPadded,16);
    const clearText = decrypted.toString('utf16le');

现在我只需要用 IV 删除前几个字节 :)

关于jQuery 中的客户端加密和 PHP 中的解密jquery加密数据的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于.Net 中的文件加密和 Python 中的解密 | AES加密、5、PHP-将浮点数转为整数 php 浮点数比较 php 浮点数精度 php 浮点数格式、AES 加密 - Dart 中的解密 - Flutter、C# 中的 AES/Rijndael-解密,JavaScript 中的解密(节点)的相关知识,请在本站寻找。

本文标签:

上一篇在计时器结束 Javascript 后调用 Php 页面(js的计时器暂停之后再次执行)

下一篇AJAX PHP MYSQL 查询 - 仅显示结果 IF 和总和结果(mysql查询只显示一句)