在本文中,我们将为您详细介绍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加密数据)
- .Net 中的文件加密和 Python 中的解密 | AES加密
- 5、PHP-将浮点数转为整数 php 浮点数比较 php 浮点数精度 php 浮点数格式
- AES 加密 - Dart 中的解密 - Flutter
- C# 中的 AES/Rijndael-解密,JavaScript 中的解密(节点)
jQuery 中的客户端加密和 PHP 中的解密(jquery加密数据)
如何解决jQuery 中的客户端加密和 PHP 中的解密
我正在尝试创建一个函数,在该函数中我从客户端加密字符串并在 PHP 端解密。主要用于登录时。 我展示了 CryptoJs 库,但很难理解谁在 PHP 中解码,也有很多线程与此相同,但 PHP 中没有解密。 我编写了一个代码,但它不起作用,请帮助我如何进行客户端加密和服务器端 PHP 解密。
var message = "MyText";
var key = "01234567890123456789012345678901";
var encrypted = CryptoJS.AES.encrypt(message,key);
var decrypted = CryptoJS.AES.decrypt(encrypted,key);
$(''#1'').text("Encrypted: " + encrypted);
$(''#2'').text("Decrypted: " + decrypted.toString(CryptoJS.enc.Utf8));
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.0.0/crypto-js.min.js"></script>
<div id="1"></div>
<div id="2"></div>
PHP
function myCrypt($value,$key,$iv)
{
$encrypted_data = openssl_encrypt($value,''aes-256-cbc'',OPENSSL_RAW_DATA,$iv);
return base64_encode($encrypted_data);
}
function myDecrypt($value,$iv)
{
$value = base64_decode($value);
$data = openssl_decrypt($value,$iv);
return $data;
}
$valTxt = "MyText";
$key = "01234567890123456789012345678901"; // 32 bytes
$vector = "1234567890123412"; // 16 bytes
$encrypted = myCrypt($valTxt,$vector);
$decrypted = myDecrypt($encrypted,$vector);
print $encrypted . "\\n";
print $decrypted . "\\n";
.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 浮点数格式
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>
以上就介绍了5、PHP-将浮点数转为整数,包括了php,浮点数方面的内容,希望对PHP教程有兴趣的朋友有所帮助。
AES 加密 - Dart 中的解密 - Flutter
如何解决AES 加密 - Dart 中的解密 - Flutter
我在商店中有一个使用 api AES 加密的应用程序,我正在尝试将该应用程序移植到 Flutter。我被困在加密/解密部分。我无法更改 api 中的加密,因为它是实时的。
我尝试过 Encrypt、aes_crypt、pointycastle 软件包。还是卡住了。不知道我错过了什么。我在这些包中找不到 IvParameterSpec
、SecretKeySpec
和 ("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 中的解密(节点)
正如所指出的,解决方案是将 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 中的解密(节点)的相关知识,请在本站寻找。
本文标签: