php 3des mac,php,_关于3DES加密的问题,php - phpStudy

关于3DES加密的问题

我现在这边需要跟.NET那边进行数据交互,数据是需要进行加密处理的,但是现在的问题是,我用PHP的加密处理之后和.net加密处理之后的数据不相等,他们那边的代码是没有问题的,这个是可以确认的,那么我这边的加密就有问题了,现在具体的问题不是很清楚,求各位大神指教,下面是我这边的代码:

/**

* 3DES加密处理类

*

* @author fbbin fbbin@gmail.com

* @version 1.0 beta

* @created 2014/01/07

* @logs

*/

class Crypt3Des {

/**

* 加密需要的key

* @var intval

*/

protected static $key = "";

/**

* 静态构造初始化

*

* @return Crypt3Des

*/

public static function instance($key = '') {

self::$key = $key;

return new static;

}

/**

* 对字符串进行加密

*

* @return string

*/

public function encrypt($input) {

$size = mcrypt_get_block_size(MCRYPT_3DES, MCRYPT_MODE_ECB);

$input = $this->paddingPKCS7($input);

$key = str_pad(self::$key, 24, '0');

$td = mcrypt_module_open(MCRYPT_3DES, '', MCRYPT_MODE_ECB, '');

$iv = @mcrypt_create_iv (mcrypt_enc_get_iv_size($td), MCRYPT_RAND);

@mcrypt_generic_init($td, $key, $iv);

$data = mcrypt_generic($td, $input);

mcrypt_generic_deinit($td);

mcrypt_module_close($td);

return base64_encode($data);

}

/**

* 对字符串进行解密

*

* @return string

*/

public function decrypt($encrypted) {

$encrypted = base64_decode($encrypted);

$key = str_pad(self::$key, 24, '0');

$td = mcrypt_module_open(MCRYPT_3DES, '', MCRYPT_MODE_ECB, '');

$iv = @mcrypt_create_iv(mcrypt_enc_get_iv_size($td),MCRYPT_RAND);

$ks = mcrypt_enc_get_key_size($td);

@mcrypt_generic_init($td, $key, $iv);

$decrypted = mdecrypt_generic($td, $encrypted);

mcrypt_generic_deinit($td);

mcrypt_module_close($td);

return $this->pkcs5Unpad($decrypted);

}

/**

* 对字符串按照规则打包

*

* @return string

*/

public function paddingPKCS7($data) {

$block_size = mcrypt_get_block_size(MCRYPT_3DES, MCRYPT_MODE_ECB);

$padding_char = $block_size - (strlen($data) % $block_size);

$data .= str_repeat(chr($padding_char), $padding_char);

return $data;

}

/**

* 对字符串按照规则解包

*

* @return string

*/

public function pkcs5Unpad($text) {

$pad = ord($text{strlen($text)-1});

if ($pad > strlen($text)) {

return false;

}

if (strspn($text, chr($pad), strlen($text) - $pad) != $pad) {

return false;

}

return substr($text, 0, -1 * $pad);

}

}

使用方式:

echo Crypt3Des::instance(base64_encode('FD3BCD75678B4BABB6E8948149CA6C91'))->encrypt('1');

我这边得出的结果是:mzbVH6DmUXI=, 而正确的值应该是:sztImTSd0o;

求指教,万分感谢。

相关阅读:

jQuery param如何添加元素

请问est工具的这种github博客风格是用的什么工具?

请问session存在哪里会比较好?

有什么方法可以高效地把Oracle中某个表的数据备份到mysql中?

Mac OS 10.9 boost库链接错误

ios手动添加sdk具体流程,已尝试多次,都有一些文件找不到,不知道到底缺哪些???

如何在移动端网页上用touchstart模拟click的效果?

既然alert(new String("A")=="A"),为甚会这样???

我用C的clock算我写的方法执行时间遇到的问题

JS里面用setAttribute来设置文字图标,结果出来一串符号为什么?

Markdown 新建头部信息疑问

vue.js track-by的正确使用方法

nginx-几个关于location pattern的问题

如何对无格式的js进行调试呢?

printf("%p",a) 和 printf("%p",&a) 的区别

表格置顶样式

How to do rollback when deploying an enterprise application

没有hdfs,spark不能集群方式跑是吧?

如何实现Fragment左右无限滑动功能?

Python模拟登录知乎出现的403问题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在风能领域,准确预测风速对于风电场的运行与管理至关重要。Matlab作为一个强大的数学计算和数据分析平台,被广泛应用于风速预测模型的构建。本文将深入探讨基于四种风速——随机风、基本风、阵风和渐变风的组合风速预测技术。 我们来理解这四种风速类型: 1. **随机风**:随机风是指风速呈现出随机性的变化,通常由大气湍流引起。在建模中,通常通过统计方法如高斯分布或Weibull分布来模拟这种不确定性。 2. **基本风**:基本风速是指在无特定扰动条件下的平均风速,它是长期观测结果的平均值,通常用于结构设计和风能评估。 3. **阵风**:阵风是短时间内风速显著增强的现象,对建筑物和风力发电机造成的主要威胁之一。阵风的预测涉及到风的脉动特性分析。 4. **渐变风**:渐变风是指风速随时间和空间逐渐变化的过程,常见于风向转变或地形影响下的风场变化。 在Matlab中,利用这四种风速类型进行组合预测,可以提高预测的准确性。预测模型可能包括以下几个步骤: 1. **数据收集与预处理**:收集历史风速数据,包括随机风、基本风、阵风和渐变风的数据,进行异常值检测、缺失值填充以及数据标准化。 2. **特征工程**:提取风速变化的相关特征,如平均值、标准差、极值、频率分布等,这些特征可能对预测有重要影响。 3. **模型选择**:可以选择多种预测模型,如时间序列分析(ARIMA、状态空间模型等)、机器学习算法(线性回归、决策树、支持向量机、神经网络等)或深度学习模型(LSTM、GRU等)。 4. **模型训练**:利用历史数据训练选定的模型,调整模型参数以优化性能,例如通过交叉验证来避免过拟合。 5. **模型验证与评估**:使用独立的测试集验证模型预测效果,常见的评估指标有均方误差(MSE)、平均绝对误差(MAE)和决定系数(R²)。 6. **组合预测**:结合四种风速的不同模型预测结果,可以采用加权平均、集成学习(如bagging、boosting)等方式,以提升整体预测精度。 7. **实时更新与动态调整**:实际应用中,模型需要不断接收新的风速数据并进行在线更新,以适应风场环境的变化。 通过以上步骤,可以构建一个综合考虑各种风速特性的预测系统,这对于风电场的功率输出预测、风电设备的维护计划以及电网调度都具有重要价值。然而,需要注意的是,每个风场的地理环境、气候条件和设备状况都有所不同,因此模型的建立应根据实际情况进行定制和优
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值