加解密的困惑与思路(接上篇)

HarmonyOS NEXT加解密工具箱:基于crypto-js的封装与工程实践 数据加密是保障应用安全的核心技术,其原理是通过特定算法将明文转换为不可读的密文,确保数据在存储与传输过程中的机密性与完整性。在移动应用开发中,加解密技术对于保护用户凭证、敏感信息交换至关重要。HarmonyOS NEXT作为新一代操作系统,为开发者提供了丰富的安全能力。本文聚焦于如何基于官方`@ohos/crypto-js`加密库,构建一个开箱即用的加解密工具箱。该工具箱通过模块化设计,封装了AES、DES、SHA-256等多种常用算法,并解决了密钥管理、编码转换等工程实践中的常见痛点,旨在为Harmony 阅读详情

      又花了几天时间在网上搜索了有关JavaScript与Java的加解密方法,两种语言都有实现的无非就RSA、DES、MD5,看似大牌,但都不符合要求或者千篇一律的出现同一漏洞,根本无法使用。

      停下来想一想,求人不如求己;其实所谓加密,就是让一组数据加入一定的规则编码,以窃听方无法准确的知道数据的组成序列。从这一点上讲,往往是这些公开、非常通用、足够复杂的算法越会容易破解,而设以若干组自定义的业务规则保密的时间会越长。

      所以决定自己编写算法,省时省力也好维护。

      每一个字符都自己的编码,而编码不光是10进制,还有36进制、62进制、72进制等。

      对编码有位操作、算术操作,但要注意哪些操作是可逆的,哪些操作可能会导致溢出,而Javascript和Java的溢出位数是不一样的。

      对于规则掺杂进来的沙子(salt、privateKey)可以一会顺序、一会反序,甚至任意变换顺序。

 

下面是我的SmartTable核心方法加密后的代码:

var smartTable_licenseNo='1PYCDZ!180D!1QbS0H,7F,,,1|1PYCDZ!180D!1QbS0H,C0,A8,54,38|1PYCDZ!180D!1QbS0H,C0,A8,3D,F5';
SmartTable.prototype.flush=function(onlyBody){var code='%e3%-e%11%-26%65%-6%59%-75%cf%0%42%-34%d3%-44%4a%-33%97%-33%50%-26%9c%-a%2a%-67%8a%-40%44%-26%ab%-a%3e%-6f%8f%39%f%-74%b1%-3%1%-66%c2%-1%17%-45%d2%10%c2%-9%4%-4f%e9%19%44%-33%a4%e%32%-62%a5%46%64%-62%a4%-d%3a%-26%a7%1%9%-6a%cf%-4%3%-74%ca%-24%30%-26%9b%-36%4b%-33%a5%-3d%77%-63%9f%33%b%-33%9f%-48%9f%-37%46%-33%64%39%5f%-6d%db%-2a%8%-65%e8%-44%4a%-3a%97%-2e%0%-75%d1%-3%30%-26%97%-d%18%-62%f2%2d%2a%-75%71%3c%1a%-76%d2%2%11%-26%86%-3c%57%-33%a6%-2e%86%-b%15%-69%dd%1f%44%-33%d1%a%2a%-75%a3%47%44%-49%a7%-18%3b%-66%e4%-40%57%-39%91%-37%54%-26%98%-10%2b%-69%d2%4%4b%-33%d1%1%21%-71%5b%-1%4b%-67%d8%b%d2%-b%46%-36%99%2c%5e%-65%db%-47%55%-66%d0%7%8%-66%e0%-1%21%-69%d2%0%27%-26%97%-3a%0%-69%e2%31%7a%-33%93%33%1f%-79%ca%-8%47%-36%ba%-12%1d%-65%e6%-2e%85%-34%44%-34%d6%20%9%-6a%df%-40%6d%-66%96%33%40%-26%74%-14%32%-70%e8%-4%7%-6d%d1%-44%58%-67%c7%-3%3b%-7a%8e%-3d%b%-62%dc%e%25%-6f%9a%10%46%-6a%db%-9%92%-3d%5b%-75%9b%33%42%-26%94%-7%a%-70%e5%-8%1a%-6d%d7%-40%57%-67%cb%3%27%-7a%8a%-40%4d%-26%ac%20%2b%-69%97%40%53%-33%ca%-9%3%-71%79%-42%17%-6e%dc%23%b4%-b%d%-66%99%-1f%7%-63%db%-1%26%-26%65%37%43%-66%b6%-38%2b%-75%e4%4%7%-76%e0%-4%48%-33%9d%-4d%6d%-33%d8%-1%1d%-64%de%d%2c%-6d%5b%-1%1c%-26%a1%-a%92%-3d%53%-75%9b%33%42%-26%94%-7%b%-70%d0%-5%1d%-73%97%-33%0%-26%9b%-3a%66%-33%ca%1%d%-6f%dc%31%3c%-73%9d%39%1a%-26%97%-34%47%-33%8d%-4f%40%-33%92%-21%8c%-48%52%-63%99%-1d%5%-75%d4%4%2c%-26%65%37%51%-76%b6%-a%2c%-66%e6%-13%a%-78%da%c%0%-26%97%-3a%7a%-33%a2%-4a%5d%-63%e2%-1%32%-26%68%-3%4d%-70%db%1%e2%-2%46%-33%63%-11%2%-65%87%-3a%57%-75%d7%0%b%-26%a4%0%1%-70%d5%9%2e%-6f%d8%-4d%46%-66%e5%23%31%-68%a2%35%53%-34%c7%-6%d%-73%79%-42%42%-26%9f%-1b%c9%-c%13%-26%a6%-24%8%-26%9f%-1%6f%-26%65%35%58%-6a%a6%-15%3a%-6f%e5%-40%56%-65%9c%-44%5e%-63%8a%-40%6f%-6a%8e%-3c%d%-64%db%a%2e%-76%a3%-e%1d%-63%94%-3b%9d%-6%46%-33%95%-11%3%-63%87%-3a%5e%-26%a6%-7%e%-62%e4%-40%50%-31%cc%3%2f%-76%d2%-4%51%-33%a9%-1d%6c%-65%53%-1%46%-75%cd%-3%11%-26%86%-f%11%-70%d9%22%c0%1%12%-26%a9%e%8%-26%a1%-1%7a%-34%95%35%5f%-6d%b7%-c%31%-26%a4%0%11%-62%ce%3%8%-50%c7%-8%7a%-33%99%-4a%5d%-65%91%-30%70%-26%68%5%4d%-70%db%8%da%-1%46%-33%98%30%58%-79%c7%-8%42%-33%a8%-44%4a%-31%97%-32%4%-26%9b%-3c%37%-69%ce%1%51%-33%de%24%36%-79%93%31%53%-36%cb%-a%d%-65%cd%-4f%40%-31%92%-20%b4%-48%53%-31%e8%14%8%-74%91%-33%3a%-6e%a2%48%51%-63%ae%-14%7a%-36%d8%-3%a%-65%e5%-44%5e%-63%ce%-c%7a%-33%99%-4a%5c%-39%cf%d%2c%-76%a3%3b%b%-33%d4%-5%d6%-b%7%-66%a1%-11%3%-3a%87%-35%5%-69%d8%-5%1c%-66%e0%e%47%-33%99%-47%71%-63%8a%-40%16%-26%ac%20%3c%-70%9a%42%1b%-6f%8a%-3a%7%-64%c3%-8%3b%-6f%d1%12%cb%-48%53%-31%99%-21%5%-26%9e%-35%7a%-33%97%3%15%-34%a4%-54%68%-65%d7%7%16%-66%91%-32%f%-64%d4%-6%2a%-6e%d7%-4a%5c%-66%cf%d%2c%-4a%a4%31%4b%-79%94%-3b%9d%-4a%50%-65%58%-4%1%-6a%87%-3a%3%-69%d8%-5%1c%-66%e0%e%47%-34%cb%-47%74%-65%c8%-3%18%-76%e6%2c%7a%-33%93%33%1f%-6f%ce%7%a%-26%86%-3c%57%-33%a6%-2e%86%-b%44%-38%d8%15%7%-26%9e%-35%7a%-33%6b%46%58%-6a%b5%-54%6d%-66%e5%3%a%-78%bf%c%0%-26%97%-39%7a%-38%cb%5%6%-6a%df%-3d%72%-66%a9%35%41%-78%c2%8%da%-1d%c%-78%58%-4%9%-26%94%-33%42%-34%d1%-44%4f%-65%e6%3%b%-74%8e%-3a%26%-70%da%2%24%-62%e0%23%11%-62%a4%36%11%-62%d9%3%10%-26%86%-3c%57%-33%a6%-2e%86%-b%8%-67%99%-22%51%-26%9e%-2d%2b%-69%9c%45%15%-33%a7%-16%30%-6f%e6%-4%c%-6f%d1%9%48%-33%9e%-4d%68%-63%df%-e%1c%-26%9e%-32%34%-66%a3%3d%6a%-4a%c5%-48%9f%-3f%46%-34%97%-11%3%-31%c6%3%4%-76%dc%-4%16%-75%97%-33%7%-64%db%-7%22%-75%ca%-2d%18%-66%e6%23%31%-75%53%-1%4e%-26%97%-3a%26%-4a%aa%-4f%40%-33%92%-21%8c%-48%52%-63%e8%11%c%-71%b0%-1c%9%-26%65%37%51%-71%b2%-14%31%-65%b5%3%c%-6d%d0%-44%5f%-39%d9%-a%36%-74%8e%-3d%b%-64%cd%e%65%-33%9b%3c%4c%-6b%d4%-a%e1%-4a%51%-3a%58%-3%53%-69%d6%1%b%-26%a1%-39%5d%-34%d6%-40%50%-31%dd%-7%2e%-71%a9%-29%22%-26%ab%23%36%-6f%9c%32%4%-49%b9%-1f%2e%-26%87%-12%57%-33%a1%-2e%85%-35%15%-69%dd%1f%44%-33%d1%-2%30%-6f%a7%33%59%-6f%a7%-7%7a%-33%d7%4%1%-26%9e%-30%48%-33%ca%3%2f%-65%ca%5%b%-26%9e%-2a%28%-75%a3%39%b%-33%a8%-48%a0%-d%17%-69%9c%3d%14%-33%c7%7%f%-70%e6%-26%1d%-6d%de%-13%7%-6f%cd%-7%31%-26%97%-3a%51%-33%b2%-1d%6c%-63%53%-1%42%-26%97%-34%16%-66%c1%-4%36%-4a%c3%-2e%85%-34%44%-33%d9%1e%4%-6e%db%11%3a%-26%65%a%15%-33%7b%-54%6c%-63%97%-2e%1%-26%a3%-5%8%-6d%d8%-d%7a%-38%cb%-e%2%-66%de%12%65%-33%6e%44%47%-6f%d3%2%e4%-4a%51%-66%a8%38%54%-74%c5%-b%17%-66%94%-37%40%-26%a4%-33%47%-33%9e%9%7b%-43%ab%-3b%51%-33%ae%33%69%-36%60%13%53%-33%9a%9%54%-34%84%-43%57%-33%a2%22%89%-2b%57%-34%99%-22%54%-76%a3%-33%6b%-39%58%4%5%-76%7a%-33%69%-47%97%-33%50%-76%a0%-24%2b%-37%8a%-40%6a%-76%af%-29%5e%-32%91%-30%72%-26%68%6%b%-33%a8%-48%86%-b%44%-38%d8';var key='SmartTable%5fv3%2e0%5fBy%5ftreeClimber%5fxionglb%40163%2ecom';var plaincode='%1b%1n%1c%1d%z%1C%1L%17%1m%1b%1q%1x%1o%1s%k%1c%1d%1b%1n%1c%1d%e%1b%1n%1c%1d%i%W%1v%1h%1m%1c%1n%1v%k%1t%1m%1d%1r%1b%1Z%1o%1d%e%1j%1d%1x%f%f%x%1b%1n%1c%1d%z%1v%1h%1m%1c%1n%1v%k%1t%1m%1d%1r%1b%1Z%1o%1d%e%1b%1n%1c%1d%f%x%1b%1n%1c%1d%z%1b%1n%1c%1d%k%1r%1t%1a%1r%1s%1q%1h%1m%1f%e%m%i%1b%1n%1c%1d%k%1k%1d%1m%1f%1s%1g%j%n%f%x';window.eval(confusePlainCode(plaincode));window.eval(code);return html;}

Python实现OpenSSL EVP_BytesToKey与AES-256-CBC兼容加解密 在数据安全交互场景中,AES-256-CBC作为广泛使用的对称加密算法,通过分组密码和CBC模式确保数据机密性。其核心原理涉及密钥派生、初始化向量和分组填充机制。现代密码学实践中,安全的密钥派生函数如PBKDF2至关重要,但为兼容遗留系统,常需复现OpenSSL特有的EVP_BytesToKey函数。该函数通过循环哈希生成密钥材料,虽因迭代不足存在安全争议,却在历史系统对接中不可或缺。本文聚焦于使用Python cryptography库精准复现该流程,解决与OpenSSL命令行工具的互操作问题,涵盖密钥派 阅读详情

相关推荐

HTTP接口RSA加密实战:从原理到Python代码实现与避坑指南

非对称加密是保障网络通信安全的核心技术之一,其核心原理在于使用一对数学上关联的公钥和私钥,公钥公开用于加密,私钥保密用于解密,从而在不安全信道中实现安全的数据传输。这项技术的核心价值在于解决了身份认证和数据保密两大关键问题,尤其适用于需要验证服务端身份并保护敏感数据的场景,例如支付接口、身份信息传输等。在实际工程实践中,RSA作为最常用的非对称加密算法,其应用涉及密钥管理、填充模式选择、性能优化等多个关键决策。本文聚焦于HTTP接口对接这一高频场景,深入探讨RSA加密的完整工作流,包括密钥获取、数据加密、网

weixin_30680385的博客 392

加密解密思路

  数据+密钥+加密密码-用java,jdk进行相应算法的加密解密实现   1,randomkey  加密/解密密码     随机定义,加密传给解密时用  2,RSA  私钥(解密)/公钥(加密)   事先给好 3,sign生成逻辑一样   私钥用来解密key,key用来解密数据   加密:   加密公钥+加密密码   key  随机数 publicKey  密钥 ...

yuhui666666的博客 1460

源代码加密产品选型指南:透明加密、沙盒隔离与权限管控深度PK

在软件研发领域,源代码作为核心数字资产,其安全防护是构建企业技术壁垒的关键。从技术原理上看,数据保护通常围绕加密、隔离与访问控制三大核心机制展开。透明加密通过在操作系统驱动层对文件进行实时加解密,实现“无感”防护;沙盒隔离则通过虚拟化技术构建独立环境,控制数据流动;权限管控则聚焦于身份认证与操作审计,与DevOps流程深度集成。这些技术的工程价值在于,它们针对不同威胁模型(如外部窃取、内部泄露、供应链攻击)提供了差异化的解决方案。在实际应用场景中,开发团队需根据自身技术栈复杂度、合规要求及团队规模,在部署运

weixin_33898876的博客 421

几种视频加密算法介绍

 几种视频加密算法介绍  返回 1. 全部加密(Naive Algorithm) 也就是使用标准 加密方法(比如DES)加密整个视频流。将视频比特流同传统的文本数据同样对待,没有利用视频压缩后数据流的特殊结 构。这种方法显然计算量巨大,很难保证视频的实时传输。 2. 选择性加密(Selective Algorithm) 选择性 加密是基于信源特征的视

wilsonke的专栏 1万+

C++版三重DES加解密工具包(含标准DES与Base64编解码实现)

一套开箱即用的C++加密工具集,完整实现DES和3DES算法,支持三种密钥配置:三独立密钥(168位)、双密钥(K1K2K1,112位)和单密钥兼容模式(等效原始DES)。核心文件包括des.cpp(基础DES轮函数与Feistel结构)、3DES.cpp(三重加密/解密主流程)、des3.cpp(另一种封装接口),配合des.h、des3.h和Base64.h头文件,可直接嵌入C++项目。所有实现严格遵循FIPS PUB 46-3、ANSI X9.52及NIST SP 800-67标准,采用64位分组长度

kafka6courier的博客 258

从TM1到TM9:手把手教你用Wireshark抓包分析LTE下行调度与传输模式切换

本文详细解析了如何使用Wireshark抓包分析LTE下行调度中的传输模式切换,从TM1到TM9的动态调整过程。通过实战案例,包括小区边缘移动、高速场景和多用户调度,揭示eNodeB如何基于信道质量指标(如RSRP、SINR)动态切换传输模式,并提供关键信令解析和优化建议,助力网络工程师提升LTE网络性能。

weixin_42651748的博客 315

关于微信分享链接如何传参问题

自定义的微信分享链接需要传递两个参数,然而在开发过程中发现微信分享链接的url部分参数没有了,其实只要把a=12&b=34的"&"符号转义一下就可以咯,a=12%26b=34,这样你传递的参数就不会被微信截取掉了,是不是很简单呀,哈哈哈哈哈 废话不多说,收藏一波 æ 退格 TAB 换行 回车

sejiangning的博客 1万+

Veeam Backup & ONE download

前言 Veeam® Availability Suite™ 是 Veeam 的旗舰解决方案,可实现简单、灵活和可靠的数据管理。消除与数据保护、恢复、监控、勒索软件防护和合规性相关的手动流程,从而减轻数据维护压力。Veeam 能够帮助您节省时间和成本,同时支持您减少在备份方面花费的时间,将更多精力放在推动业务发展上。 Veeam Availability Suite Release 版本 包含 发布时间 复制磁力链接使用迅雷或者bittorrent ...

极致,细节 1998

aes解密流程图_基于aes的加解密方案

对前端上送的报文进行解密和验签1、前端上送的报文先进行整体加密,然后把整体加密的数据作为encodeFieldVals的值;同时前端一起上送到后端的数据包括整体加密的aesKey前端请求后端的例子:http://127.0.0.1:8080/btoa/user/login{encodeFieldVals=加密数据,aesKey=整体加密的aesKey}2、后端获取encodeFieldVals和a...

weixin_42108948的博客 973

V2签名预装失败原因及解决方案

GOOGLE最新的GTS要求targetSdkVersion 大于30的APK必须使用V2及以上签名。 但实际在预装过程中,GTS测试会失败。 后面发现这是由于预装方式的原因造成的。原来的预装方式是使用APK,指定APK使用预签名的方式。Android.mk如下: LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := DKTest LOCAL_MODULE_CLASS := APPS LOCAL_MODULE_TAGS

zyfzhangyafei的专栏 6303

Flowable任务节点动态预测:基于任务ID与参数获取下一节点及候选分配策略

本文深入探讨了Flowable工作流引擎中任务节点动态预测功能的实现。通过解析任务ID与运行时参数,模拟流程执行路径,精准预测下一节点及候选用户/组集合,从而提升用户体验与系统透明度。核心在于利用自定义命令实现表达式求值,并深度解析候选者分配策略,确保预测结果与实际流程执行一致。

nnn11的博客 738

C语言手搓RSA:从大数运算到密钥生成与加解密实现

非对称加密是现代信息安全体系的基石,其核心原理在于使用一对数学上关联的公钥和私钥,分别用于加密和解密。RSA算法作为其中最经典和广泛应用的代表,其安全性建立在大数质因数分解的困难性之上。在工程实践中,实现RSA需要解决大整数运算、高效模幂计算、随机大质数生成等关键技术挑战。通过C语言从零构建RSA,开发者能深入理解模运算、扩展欧几里得算法、Miller-Rabin素性检测等底层原理,并掌握内存管理与性能优化等工程实践技能。本项目正是这样一次深度实践,通过手搓大数运算库并实现完整的RSA密钥生成与加解密流程,

weixin_29327977的博客 255

Android音频混音器AudioMixer实战:从多路输入到设备播放的完整流程解析

本文深入解析了Android平台上音频混音器AudioMixer的完整工作流程,涵盖从多路音频输入、轨道创建与配置、AudioBufferProvider数据源接入,到核心混音处理与最终设备播放的全过程。文章重点探讨了如何高效管理音频数据流、配置音量与重采样参数,并提供了缓冲区管理与性能优化的实战技巧,帮助开发者构建稳定、低延迟的音频应用。

l3m4n的博客 342

Go语言RSA加解密全解析:从原理到生产级实现与架构师能力映射

非对称加密是现代信息安全体系的基石,它通过公钥与私钥的配对,解决了密钥分发与安全通信的核心难题。其数学原理基于大整数分解等计算复杂性理论,确保了即使公开加密密钥,也无法逆向推导出解密密钥。在工程实践中,RSA算法因其可靠性和标准化,成为构建HTTPS、数字签名、密钥交换等安全协议的关键技术,广泛应用于金融支付、身份认证、数据加密等对安全性要求极高的场景。理解RSA的实现细节,如PKCS#1、OAEP等填充方案的区别,以及PEM、PKCS#8等密钥格式的处理,是开发高安全、高可靠分布式系统的必备技能。本文以G

weixin_34216107的博客 372

1.4 《SST通用技术规范》整体框架与核心条款解读

本小节以**GB/T《电力电子变压器通用技术要求》**(固态变压器SST核心通用规范)为核心依据,结合电力电子变压器技术特性与工程应用边界,系统解析规范的整体章节框架、层级逻辑与强制性/推荐性核心条款,明确规范与传统工频变压器标准的差异,为SST拓扑设计、性能验证、出厂检验与工程落地提供标准化依据。全文以标准原文、期刊文献数据与试验规范为支撑,无主观推演与感性表述。

技术工作者 1685

YOLOv11 改进 - Mamba | 集成Mamba-YOLO(AAAI 2025),Mamba-YOLOv11-B 替换骨干,破解全局依赖建模难题,实现高效实时检测

本文介绍Mamba YOLO,为图片物体识别提供了“又快又准”的新方案。传统CNN架构运行快但难以捕捉远距离关联物体,Transformer架构精度高但计算量呈平方级增长,而SSM虽计算量为线性级且能抓全局关联,但用于图片识别时细节定位不准。为此,Mamba YOLO做了三项关键优化:引入ODMamba骨干网络,解决自注意力的二次复杂度问题,且无需预训练;设计ODMamba宏观结构确定最佳阶段比例和缩放大小;采用多分支结构的RG块建模通道维度,解决SSM在序列建模中的不足。在COCO数据集测试中,其小版本推

魔改工程师的博客 858

从AES解密到PLC逆向:一文掌握通信加密与解密的核心原理与实战

加密与解密是现代信息安全的核心技术,其本质是通过特定算法和密钥,将可读的明文转换为不可读的密文,或反向还原的过程。从原理上可分为对称加密(如AES、SM4)和非对称加密(如RSA、ECC),前者加解密使用同一密钥,效率高;后者使用公钥和私钥配对,解决了密钥分发难题。哈希函数(如SHA-256、SM3)则提供单向的完整性校验。这些技术共同构成了数字信任的基石,广泛应用于网络通信(HTTPS/TLS)、数据存储、身份认证和软件保护等场景。针对日常遇到的具体问题,如微信DAT文件恢复、PDF密码移除或Nacos配

weixin_33696822的博客 547

Vue2 - 详细实现网页 “开启录音并生成音频文件,上传到服务器效果“,浏览器录制外部音频调用麦克风并传到后端,兼容全部浏览器、支持 PC 网页或手机 H5 网页、可本地播放试听(详细示例运行代码)

vue,nuxt,uniapp,网页网站,麦克风,网页录音,MediaRecorder,浏览器录音,移动端h5网页,手机端录音,web网页录音,recorder-core官方文档,Recorder,非https怎么本地录音,录音报错失败,录音后怎么播放音频,如何获取录音mp3文件,解决一直不提示麦克风权限,小白详细教程,实时录音,调用浏览器麦克风录音,浏览器不兼容,wav,mp3,vue怎么实现网页录音呢,vue2网页录音并上传到服务器,web如何实现录制音频,vue网页录音,音频录制播放和上传服务器,vu

🏆 前端领域优质创作者 6003

爬虫工程师教你如何入门Android逆向

文章来源:菜鸟学Python编程作者Lilac背景这篇文章写给Python爬虫工程师们,互联网行业的处境越来越艰辛,流量越来越涌向移动端,爬虫和反爬的攻防不断升级...

muzico425的博客 1705

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Java国密SM2对接实战:解析公钥格式与加密模式差异

非对称加密是保障数据传输安全的核心技术,其原理基于公私钥对,公钥用于加密,私钥用于解密。SM2作为我国商用密码标准算法,在金融、政务等领域广泛应用,其技术价值在于自主可控与高安全性。在实际工程实践中,算法标准统一并不意味着实现细节一致,尤其是在异构系统对接场景下。开发者常会遇到因公钥格式不匹配或加密模式不同导致的加解密失败问题。公钥格式存在多种“方言”,如裸坐标对、带标识位的编码以及PEM/DER格式,而加密模式则涉及C1C2C3与C1C3C2两种主流拼接顺序。理解这些差异并构建兼容性强的工具类,是确保跨平

weixin_27722377的博客 256

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Carnice-9b训练揭秘:两阶段优化如何提升Hermes Agent执行效率

Carnice-9b作为一款高效的AI模型,其独特的两阶段训练优化策略显著提升了Hermes Agent的执行效率。本文将深入解析这一训练机制,揭示如何通过科学的训练方法实现模型性能的突破。 ## 两阶段训练:从基础到进阶的优化路径 Carnice-9b采用创新的两阶段训练模式,通过分阶段优化实现了效率与性能的平衡。第一阶段(Stage A)专注于基础能力构建,第二阶段(Stage B)则进行

gitblog_09754的博客 875

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Windows CryptoAPI 实战指南:从哈希计算到对称加密与密钥管理

密码学是保障数据安全的核心技术,其基本原理是通过数学算法对信息进行加密、解密和验证,确保数据的机密性、完整性与真实性。在工程实践中,开发者需要调用系统提供的密码学接口来实现这些功能,避免重复造轮子并确保兼容性。对于Windows平台的开发者而言,CryptoAPI正是系统原生的密码学服务框架,它通过统一的编程模型屏蔽了底层算法与密钥管理的复杂性,其价值在于为深度绑定Windows环境的应用程序提供了最稳健、依赖最干净的加密解决方案。无论是桌面工具加密本地配置,还是服务端进行安全通信,CryptoAPI都能胜

weixin_30411819的博客 387

AES加密模式深度解析:CBC与CFB的核心差异与工程选型指南

对称加密是现代数据安全的基石,其中AES(高级加密标准)作为最广泛应用的算法,其安全性不仅取决于密钥强度,更与工作模式的选择密切相关。工作模式定义了如何将固定长度的分组加密扩展为对任意长度数据的处理,核心原理在于通过引入反馈机制或初始化向量,打破ECB模式的确定性缺陷,从而增强安全性。从技术价值看,不同的工作模式在并行性、错误传播、填充需求等工程维度上存在显著差异,直接影响系统性能与鲁棒性。在应用场景上,CBC模式因其链式结构和并行解密能力,常被用于文件加密和静态数据存储;而CFB模式通过将分组密码转化为自

dengkuituo0680的博客 375

高并发架构实战课-开篇词&前置篇

尽可能做到在遵循设计文档规范的同时,又突出每个系统自己的设计重点。此外,专栏中还有一部分设计是针对这些大型应用系统的重要组成部分的,比如限流器、防火墙、加解密服务、大数据平台等。但我需要强调一点,

小小博客 963

C#文件加密实战:AES算法原理与安全实现详解

在软件开发中,数据安全是核心议题,尤其涉及本地敏感数据存储时。对称加密算法通过同一密钥进行加解密,兼顾效率与安全性,是保护数据机密性的基础技术。AES作为当前主流标准,其CBC模式配合随机IV能有效抵御模式分析攻击,而PKCS7填充则确保数据块完整。在工程实践中,结合PBKDF2密钥派生函数,可从用户密码安全生成高强度密钥,有效应对暴力破解。这一技术组合广泛应用于客户端软件许可证保护、本地缓存加密及配置文件安全等场景,例如在C#上位机开发中保障数据传输安全,或在文件复制过程中实现内容保密。本文通过完整代码示

weixin_34080951的博客 403
上一篇: JavaScript作品加License
下一篇: 不多说,贴代码
treeClimber
博客等级 码龄24年 16粉丝 144原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值