针对文字加密的简单 JS 加密算法 --进制乱序法改良版

[size=medium]在上一篇文章[url=http://rubel.iteye.com/admin/blogs/902999]《普通 http 网络下数据的安全传输(设计原理)》[/url]中,我曾经推荐浏览器和服务器之间的加密通讯宜采用[url=http://rubel.iteye.com/admin/blogs/900503]《几个文字加密的 JS 简洁算法(续2)--进制乱序法》[/url]中提及的算法,但那个算法有密文增长较多的缺点。考虑实用性,这里作了完全重新的设计,可以自动识别单双字节字符,单字节字符用 2 位 16 进制表示,双字节字符用 3 位 41 进制表示,从而降低了密文的增长幅度。

[list]
[*]如认为汉字占用 2 个字节,则中文文本加密后的密文增长幅度为 1.5 倍——与 UTF-8 存储汉字占用字节相同;
[*]英文文本加密后密文的增长原理上是 2 倍,但由于空格是英文中的词汇分界符,在英文文本中大量存在,而空格是不加密的(只占 1 字节),故实际的密文增长并没那么多。
[*]综合评估,在中英文混合的文章中,密文的增长大概在 1.6 ~ 1.8 之间,这并不算严重(如果对密文的增长很敏感,可以用另外两个不增长密文的算法)。[/list]
这里把改良的版本贴出来,希望能对需要的人有所帮助。

[b]算法 3: 进制乱序法[/b] -- 改良版
[/size]

(function() {

//
// 密文字符集(size:62)。
// [0-9A-Za-z]
//
var _hexCHS = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';

//
// 密文字符顺序映射。
// 顺序与 _hexCHS 同,从 0 开始。
//
var _hexTBL = {
'0':0, '1':1, '2':2, '3':3, '4':4, '5':5, '6':6, '7':7, '8':8, '9':9,
'A':10, 'B':11, 'C':12, 'D':13, 'E':14, 'F':15, 'G':16, 'H':17, 'I':18, 'J':19,
'K':20, 'L':21, 'M':22, 'N':23, 'O':24, 'P':25, 'Q':26, 'R':27, 'S':28, 'T':29,
'U':30, 'V':31, 'W':32, 'X':33, 'Y':34, 'Z':35, 'a':36, 'b':37, 'c':38, 'd':39,
'e':40, 'f':41, 'g':42, 'h':43, 'i':44, 'j':45, 'k':46, 'l':47, 'm':48, 'n':49,
'o':50, 'p':51, 'q':52, 'r':53, 's':54, 't':55, 'u':56, 'v':57, 'w':58, 'x':59,
'y':60, 'z':61
};

//
// 进制转换加密法
// 原理:
// 用 [0-9A-Za-z] 62 个字符的随机排列作为进制表对字符的值进行转换。
// 特点:
// 1. 密文为数字和大小写英文字母,及原有的 [\s\n\r];
// 2. 增加了密文字符的平移操作,提高加密强度;
// 3. 可自动识别单双字节字符并进行相应编码;
// 4. 双字节字符用 3 位 41 进制表示,最大可表示 68920 的字值;
// 5. 单字节字符用 2 位 16 进制表示,最大可表示 255 的字值;
// 6. 空白、换行和回车 [\s\n\r] 保持原样。
// 缺点:
// 密文会比原文长,中文视宽增长 1.5 倍(一个汉字算 2 字节宽);
// 考虑空白和换行/回车不处理,英文增长 < 2 倍。
// 推荐:
// 可用于任意类型的文本加密,由于密文为规范的 [\w],适于各类环境。
//
// 参数:
// key[0-57) 间的值小于 62 且唯一,其后的值可任意和重复;
// key[0-16) 为 16 进制字符表,key[16-57) 为 41 进制字符表。
//
// @param array key - [0-61] 互斥值数组,length >= 57
//
Hexch = function( key )
{
if (key.length < 57) {
throw new Error('the key is too short.');
}
// 平移密钥
this._sz = _hexCHS.charCodeAt(key[15]) % (key.length-20) + 10,
this._ks = key.slice(-this._sz);
for (var _i=0; _i<this._sz; ++_i) {
this._ks[_i] = _hexCHS.charCodeAt(this._ks[_i]%62);
}

this._k16 = [], this._k41 = [];
this._t16 = {}, this._t41 = {};

for (var _i=0; _i<16; ++_i) {
this._k16[_i] = _hexCHS.charAt(key[_i]);
this._t16[this._k16[_i]] = _i;
}
for (var _i=0; _i<41; ++_i) {
this._k41[_i] = _hexCHS.charAt(key[_i+16]);
this._t41[this._k41[_i]] = _i;
}
};

// 加密
Hexch.prototype.enc = function( s )
{
var _k16 = this._k16,
_k41 = this._k41,
_ks = this._ks,
_sz = this._sz,
_cnt = 0;
return s.replace(/[^\s\n\r]/g, function( ch ) {
var _n = ch.charCodeAt(0);
return (_n <= 0xff)
? _k16[parseInt(_n/16)] + _k16[_n%16]
: _k41[parseInt(_n/1681)] + _k41[parseInt(_n%1681/41)] + _k41[_n%41]
// 平移
}).replace(/[0-9A-Za-z]/g, function( ch ) {
return _hexCHS.charAt((_hexTBL[ch] + _ks[_cnt++%_sz]) % 62);
});
};

// 解密
Hexch.prototype.dec = function( s )
{
var _t16 = this._t16,
_t41 = this._t41,
_ks = this._ks,
_sz = this._sz,
_cnt = 0;
var _s = s.replace(/[0-9A-Za-z]/g, function( ch ) {
return _hexCHS.charAt((_hexTBL[ch] - _ks[_cnt++%_sz]%62 + 62) % 62);
});
var _rs = '';
for (var _i=0; _i<_s.length;) {
var _ch = _s.charAt(_i);
if (/[\s\n\r]/.test(_ch)) {
_rs += _ch;
++_i;
} else if (_t16[_ch] !== undefined) {
_rs += String.fromCharCode(_t16[_s.charAt(_i)]*16 + _t16[_s.charAt(_i+1)]);
_i += 2;
} else {
_rs += String.fromCharCode(_t41[_s.charAt(_i)]*1681 + _t41[_s.charAt(_i+1)]*41 + _t41[_s.charAt(_i+2)]);
_i += 3;
}
}
return _rs;
};

})();

[size=medium][b]用法:[/b][/size]

<script language="JavaScript">
var _str = "中文字符串和 English char string 的 JS 加密 1234. 包含一些标点符号,*@%! 等。";
var _k3 = [61,37,44,31,34,7,24,6,43,12,27,3,25,29,60,33,35,41,58,2,51,49,9,5,59,11,42,32,22,40,4,57,50,38,8,56,21,19,52,53,16,28,1,26,47,17,54,46,10,23,55,13,14,20,15,36,18];
var _o = new Hexch(_k3);
var _enc3 = _o.enc(_str);
alert(_enc3)
//7Eg9K4UTzvBzgBPPTC eEb6xHzJHQIKEq jIhRYSpl MNCfJqxNzsHK KlP hmuo 61BNLv Nhcvd4g9cr aDkCWBJXPgR6y9iiG6GRQx4PT5AYatm1rsS rnQxSr
alert(_o.dec(_enc3));

[size=medium][b]注:[/b] _k3 是一个 [0-61] 的互斥值随机排列数组,可用 PHP 命令行执行如下代码得到。
[/size]

$a=range(0,61); shuffle($a); echo join(',', $a); // _k3 只需前 57 项元素。

[size=medium]
[b]说明[/b]:本人原创,代码可以自由使用!
[/size]
逆向工程实战:破解极验点选验证码的完整流程与技术解析 验证码作为网络安全的基础防线,其核心原理是通过人机交互差异来区分真实用户与自动化程序。现代验证码如极验(GeeTest)采用了动态加密、行为轨迹分析和多重风控机制,将验证逻辑前移并深度混淆,大幅提高了自动化破解的难度。其技术价值在于通过前端复杂的JavaScript代码和加密算法,对用户操作行为进行实时采集与加密传输,确保交互数据不可伪造。在数据采集、自动化测试和安全研究等应用场景中,理解验证码的工作原理成为关键技术需求。本文以B站登录场景中的极验点选验证码为例,深入剖析其逆向工程全流程。通过动态调试、Ho 阅读详情

相关推荐

JavaScript的互斥(mutex)对象。-JavaScript开发

基于承诺的互斥锁允许顺序执行相同的异步操作。 一个典型的用例示例是检查资源是否存在,并作为原子异步操作读取/创建资源。 互斥(mutex)JavaScript的互斥(mutex)对象。 动机API配置用法示例图像服务器示例相关库动机基于承诺的互斥量允许顺序执行相同的异步操作。 一个典型的用例示例是检查资源是否存在,并作为原子异步操作读取/创建资源。 假设您有一个HTTP服务,该服务可应要求下载并提供图像。 天真的工具

盘点五种最常用加密算法!

加密算法

qq_40638618的博客 1645

文字加密解密

可对文字进行加密解密。适合收发电子邮件的时候对重要信息进行加密。 加密的两端都需要本软件进行加解密。

常见加密算法——哈希算法(MD)

加密算法是一种利用数学方法对数据进行变换的技术,旨在保护数据的安全,防止未经授权的访问或修改。对称加密算法非对称加密算法和哈希算法(也称为摘要算法)。MD5(Message Digest Algorithm 5)是一种广泛使用的加密哈希函数,它能够接受输入(如一个文件或一段文字)并生成一个固定长度的128位(16字节)的哈希值,通常以32位的十六进制数字表示。MD5算法由罗纳德·李维斯特(Ronald L. Rivest)在1992年设计,旨在确保数据的完整性。

HHX_01的博客 6216

支持中英文字字符混合的md5加密算法(javascript)

网上找了很多javascript编写的MD5算法,均不支持中文字符,也就是说被散列的字符中含有中文的话,散列后的结果与java或其他语言散列的结果不一样。因此特地上传这个javacript编写的支持中英文字字符混合的md5加密算法(带示例),以供需要把WEB客户端加密传送参数到服务端的用户使用。

ROS2仿真抓取分拣案例,使用myCobot 280机械臂结合ROS2系统搭建机械分拣站

本案例展示了如何利用myCobot 280 urdf模型构建一个对象分类站,并在ROS2 jazzy中完成运动规划。

m0_71627844的博客 2125

字符串加密

字符串加密

xingfuyisheng的专栏 2474

SMPTE ST 2110 概论(三)

SMPTE ST 2110 概论(三)ST 2110-30:未压缩的PCM音频流ST 2110-31:非PCM音频传输ST 2110-40:辅助数据传输结语 ST 2110-30:未压缩的PCM音频流 鉴于音频系统是广播系统中最复杂,也是最重要的一套系统,我们先来回顾一下广电音频系统的历史。 最老式的音频都是基于模拟信号的,具有有限的动态范围,并且用连续的电压变化来描述音频。再后来就基于数字信号(...

Cidd0422的博客 1万+

常见的七种加密算法及实现

数字签名、信息加密是前后端开发都经常需要使用到的技术,应用场景包括了用户登入、交易、信息通讯、oauth等等,不同的应用场景也会需要使用到不同的签名加密算法,或者需要搭配不一样的签名加密算法来达到业务目标。这里简单的给大家介绍几种常见的签名加密算法和一些典型场景下的应用。

linzhongshu的专栏 3573

从零开始构建高精度称重系统:ADS1232硬件设计与软件调优实战

本文详细介绍了如何基于TI的ADS1232 24位ADC芯片构建高精度称重系统,涵盖硬件设计、软件调优及校准算法。通过优化电源设计、PCB布局和卡尔曼滤波算法,实现毫克级测量精度,适用于工业自动化和实验室等高要求场景。

weixin_28285943的博客 382

使用.NET 免费开源包ViewFaceCore做一个人脸识别并注册的功能,没有比我更全的

本文介绍了一个基于WinForm的免费人脸识别系统实现方案。系统使用AForge和ViewFaceCore库,支持从USB或电脑自带摄像头采集图像,具备人脸注册和快速识别功能。硬件方面仅需普通摄像头,软件依赖多个NuGet包(如AForge.Video、ViewFaceCore等)。界面包含视频显示、图像预览和功能按钮控件,后台采用SQLServer存储用户面部特征数据。核心代码展示了人脸检测、特征提取和多线程处理逻辑,通过ViewFaceCore实现高效识别。系统具有识别速度快、准确率高的特点,适合Win

一个靠“吃代码”长大的程序猿,专治各种“Bug 饥饿症”。 817

一种加密方法(16进制)

一种简单的加密方法,信息轻松加密,数据更安全

极简 2813

Linux单独编译设备树,开发者分享 | Petalinux 工程中设备树的介绍

本文来自XILINX嵌入式产品应用工程师 Terry Ni设备树是 Petalinux kernel 的关键组件,接下来以 2020.1 版本为例,为大家介绍一下在Xilinx Petalinux 工程中的设备树是如何产生,配置以及修改的。Petalinux 工程中设备树的位置当我们创建了一个 petalinux 工程后(以zcu102为例),在编译的时候,会自动生成对应的设备树文件。这些设备树的...

weixin_28877107的博客 2589

Vue 完整版系统知识文档

《Vue全栈开发实战手册》摘要 本手册系统整合Vue2/Vue3全栈知识体系,涵盖基础语法、组件开发、状态管理、工程化等核心内容,适合从入门到精通的完整学习路径。主要特点: 基础核心 详解MVVM架构和响应式原理(Vue2的Object.defineProperty vs Vue3的Proxy) 完整模板语法规则与16种内置指令解析 组件系统核心:通信机制(8种方案)、插槽、动态组件、递归组件 进阶实战 状态管理:Vuex/Pinia完整解决方案 路由开发:动态路由、权限控制、懒加载 工程化:Webpack

专注 Java 后端开发,分享基础语法、JVM、并发、Spring 全家桶、微服务、分布式、性能优化等实战干货。坚持输出高质量技术笔记,用简单语言讲清复杂原理,助力每一位 Java 开发者稳步进阶。 401

TI硬件笔试面试题型解析上

摘要: 本专栏聚焦大厂硬件笔试面试题解析,当前第14期以德州仪器(TI)为例,涵盖模拟电路与数字电路核心考点。模拟电路部分涉及最大功率传递定理、运放设计(虚短/虚断)、共模抑制比(CMRR)及高频PCB信号完整性;数字电路包括CMOS与TTL对比、建立/保持时间、竞争冒险消除、D触发器分频及“线与”逻辑实现。文章强调通过例题掌握解题方法与知识点,助力读者应对硬件工程岗位的笔试与面试挑战,附常见考点总结与实用建议。全文注重理论与实践结合,提供典型题型解析与设计思路。(150字)

启芯硬件的博客 950

用 CDS View I_APARToleranceGroup 管理客户与供应商收付差异容差:配置语义、字段解读与 ABAP 落地实践

财务共享服务中心常面临小额差异处理的挑战,SAP通过"客户/供应商容差组"机制实现自动清账规则配置。CDS视图I_APARToleranceGroup将配置数据转化为可查询维度,包含宽限天数、固定现金折扣等关键业务参数。该视图支持按公司代码和容差组查询差异处理策略,可用于报表开发、主数据校验和接口合规检查,帮助财务团队高效管理海量小额交易差异,减少手工操作。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 127

字符串加密、解密算法

字符串加密、解密算法包括: MD5、Des、Base64三种方式,详情如下所示: using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Security.Cryptography; using System.Text; namespace EncryptTools { /// <summary> /// 加解密帮助类 /// &.

坚持、争取、沟通、包容、信任、... 3536

ComfyUI整合包、秋叶ComfyUI、Florence节点报错下载并加载Florence2模型No module named ‘timm.layers‘、ComfyUI报错解决

步骤操作1打开2地址栏输入cmd并回车3输入命令:4安装完成后重新打开 ComfyUI,执行工作流,即可解决报错。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 1243

对文本简单加密解密算法

//单个字符异或运算 ENCRYPTDLL_API char MakecodeChar(char c, int key) { return c = c^key; } //单个字符解密 ENCRYPTDLL_API char CutcodeChar(char c, int key) { return c^key; } //加密 ENCRYPTDLL_API void Makecode(char *pstr, int *pkey) { int len = strlen(pstr);//获取长度 f.

WZY31014332886的专栏 1471

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

几个文字加密的 JS 简洁算法(字符平移法)和一些个人的想法

[size=medium]未深入了解过数据加密——我想那应该是科学家们的事。 俺小程序员一个,但喜欢思考,琢磨过“加密的问题”良久良久……(没有最终结果) 这里说说自己琢磨之后的一些想法,仅供茶余饭后 没事瞎想时的一些零星素材。 “加密”嘛,顾名思义,基本就是要别人看不明白本来可以明白的xx,所以,对于我们日常看见的文字,只要让别人看不明白就算加密了。 不同于对其他信息的加密...

testdownabc的专栏 611

深度学习工具包 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")

几个文字加密的 JS 简洁算法(续2)--进制乱序法

[size=medium]续前一篇博文[url=http://rubel.iteye.com/blog/891657]《几个文字加密的简洁算法和一些个人的想法》[/url]——字符平移法 以及上一篇博文[url=http://rubel.iteye.com/blog/897191]《几个文字加密的简洁算法(续)》[/url]——字符错位法 这里提供第三种加密方法——对字符 [b]Unicode...

testdownabc的专栏 377

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

为AJAX实现互斥

随着AJAX范例得到越来越广泛的应用,浏览器页面可以在向后台服务器请求数据的同时保持前端用户界面的活跃性(因此在AJAX中称为异步)。然而,当这两个活动同时访问共用的JavaScript和DOM数据结构时就会引发问题。JavaScript没有提供针对该并发程序问题的经典解决方案。本文描述了作者在互斥机制方面的新见解,该经过验证的互斥机制在JavaScript中能发挥良好的作用。为什么需要互斥?

baggio785的专栏 1842

一个简单且安全的文件加密算法------异或加密

有空了,再写!

认知 行动 坚持 2万+

视频隐私脱敏工程化:CSRT/KCF追踪算法在本地推理中的实现与边界

在短视频内容合规审查中,动态遮挡(Dynamic Masking)是高频且高耗时的环节。传统手动关键帧打码不仅效率低下,且在目标快速移动或遮挡时极易出现遮罩漂移。本文从计算机视觉工程角度,解析基于CSRT与KCF算法的目标追踪方案在视频隐私处理中的技术路径、性能权衡及落地实践。

Mysssone的博客 201
上一篇: 普通 http 网络下数据的安全传输(设计原理)
下一篇: 一个类似 Base64 但真正实现了加密的 JS 文字加密算法
testdownabc
博客等级 码龄18年 4粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值