根据自定类型,采用JAVASCRIPT方便进行数据完整性验证,所有页面都可以通用

js前端md5加密生成校验位,.net后端进行校验完整性 突然有个安全性的要求,前端和后端数据交互要验证完整性,防止篡改,我就使用表单数据拼接然后生成校验位,到了服务器端再用同样办法进行校验位验证,弄了半天发现前后端生成的md5字符串总是不一样。找了好多终于解决了 1.前端 js  下面是md5.js文件 /* * A JavaScript implementation of the RSA Data Security, Inc. 阅读详情

页面输入完整性是编写BS经常遇到的问题,如果那里需要就到那里写,那可是要花不少的时候,并且造成不必要的浪费,下面是一个通过校验脚本,使用非常方便,通过传入FORM名就可以进行校验,通过在页面控件中增加用户本身自定义属性,进行方便的验证,包括数字的输入、密码的输入、EMAIL的输入,用户本身可以进行无限的扩展,使用如下,在页面中加入如下代码:

  1. <form name="form1">
  2.     <input type="text" name="t1" req="0" size="20"><br>
  3.     <input type="text" name="t2" req="0" size="20"><br>
  4.     <input type="text" name="t3" req="0" size="20"><br>
  5.     <input type="text" name="t4" req="1" size="20"><br>
  6.     <input type="text" name="t5" req="1" customtype="email" displayname="电子邮件" size="20"><br>
  7.     <input type="button" name="bt" value="check" onclick="checkForm(document.form1)">
  8. </form>

并在页头加以包含以下代码的JS脚本:

  1. var customtypes = new Array("num","plus","int","email","link","password","name","date","money","date8");
  2. var custommessage = new Array(
  3.     "不是一个有效的数字。",
  4.     "不是一个有效的正整数。",
  5.     "不是一个有效的整数。",
  6.     "不是一个有效的电子邮件地址。",
  7.     "不是一个有效的链接,请确认输入了完整的地址,例如http://www.cnlist.com。",
  8.     "不是一个有效的密码,密码只能使用字母、下划线与数字,不能包含符号与空格。",
  9.     "不是一个有效的名称,名称只能使用字母、下划线与数字,不能包含符号与空格。",
  10.     "不是一个有效的日期。",
  11.     "不是一个有效的money格式。",
  12.     "不是一个有效的8位日期,如:20050801。"
  13. );
  14. function checkForm(oForm){
  15.   window.event.returnValue = false;

  16.   for (var i=0;i<oForm.all.tags("input").length;i++){
  17.     var ele = oForm.all.tags("input")[i];
  18.     var ct = ele.getAttribute("customtype");
  19.     var req = ele.getAttribute("req");
  20.     var dn = ele.getAttribute("displayname");
  21.     if (null == dn){
  22.       dn = ele.name;
  23.     }
  24.     dn = "“" + dn + "”";
  25.     
  26.     if(ele.value!=null){
  27.         ele.value = ele.value.replace(/%/g, "%");
  28.     }

  29.     var nr = new String(ele.value);
  30.     if ("1" == req){
  31.       if (nr.length < 1){
  32.         alert(dn + "不可以省略,请重新输入。");
  33.         //ele.focus();
  34.         focusIt(ele);
  35.         return false;
  36.       }
  37.     }
  38.     if((''==req || '0' ==req || null==req) && (ele.value == "")) continue;//不必要且没有输入时,下一个
  39.     
  40.     if ((("" == req)||(null == ct)) &&(ele.value == "")) continue;

  41.     //检查自定义类型
  42.     //纠正自定义类型在req不等于1时仍要求输入的bug
  43.     if (("1" == req) || (nr.length > 0)) {
  44.     for (var j=0;j<customtypes.length;j++){
  45.       if (ct == customtypes[j]){
  46.           if(ct=="money"){
  47.               eval("var rtn = check_" + customtypes[j] + "(ele);");
  48.           }else{
  49.               eval("var rtn = check_" + customtypes[j] + "(ele.value);");
  50.           }
  51.         
  52.         if (!rtn){
  53.           alert(dn + custommessage[j]);
  54.           //ele.focus();
  55.           focusIt(ele);
  56.           return false;
  57.         }
  58.       }
  59.     }
  60.   }
  61.   }
  62.   window.event.returnValue = true;
  63.   return true;
  64. }
  65. function check_money(s) {
  66.     s.value=s.value.replace(/,/g, "")
  67.     var re = /^(/+|-)?/d+(./d+)?$/i;
  68.     return re.test(s.value);
  69. }

  70. function check_email(s){
  71.   var re = /^/w+@(/w)+((.(/w)+)+)?$/i;
  72.   return re.test(s);
  73. }

  74. function check_num(s){
  75.   var re = /^(/+|-)?/d+(./d+)?$/i;
  76.   return re.test(s);
  77. }

  78. function check_int(s){
  79.   var re = /^(/+|-)?/d+$/i;
  80.   return re.test(s);
  81. }

  82. function check_plus(s) {
  83.   var re = /^[1-9]/d*$/i
  84.   return re.test(s);
  85. }

  86. function check_link(s){
  87.   var re = /^(http|mailto|ftp|https|telnet)://{2}/i;
  88.   return re.test(s);
  89. }

  90. function check_password(s){
  91.   var re = /^/w+$/i;
  92.   return re.test(s);
  93. }

  94. function check_name(s){
  95.   return check_password(s);
  96. }

  97. function check_date8(DateString){
  98.    return isDateEight(DateString);
  99. }
  100. //日期检测
  101. function check_date(DateString){
  102.   if (DateString==null) return false;
  103.   if (Dilimeter=='' || Dilimeter==null)
  104.   var Dilimeter = '-';
  105.     if (Dilimeter.indexOf("/")>0)
  106.   {
  107.         Dilimeter="/";
  108.     }
  109.   var tempy='';
  110.   var tempm='';
  111.   var tempd='';
  112.     var tempH="";
  113.     var tempM="";
  114.     var tempS="";
  115.     var tempymd="";
  116.     var temphms="";
  117.   var tempArray;
  118.   if (DateString.length<8 && DateString.length>19) {
  119.       return false;
  120.     }
  121.     if (DateString.indexOf(" ")>0)
  122.     {
  123.         temp=DateString.split(" ");
  124.         tempymd=temp[0];
  125.         temphms=temp[1];
  126.     }
  127.     else
  128.     {
  129.         tempymd=DateString;
  130.         temphms="00:00:00";
  131.     }
  132.   tempArray = tempymd.split(Dilimeter);
  133.   if (tempArray.length!=3) {
  134.       return false;
  135.     }
  136.   if (tempArray[0].length==4)
  137.   {
  138.     tempy = tempArray[0];
  139.     tempd = tempArray[2];
  140.         tempm = tempArray[1];
  141.   }
  142.   else
  143.   {
  144.     tempy = tempArray[2];
  145.     tempd = tempArray[1];
  146.         tempm = tempArray[0];
  147.   }
  148.     tempArray = temphms.split(":");
  149.     if (tempArray.length>3  || tempArray.length<2) {
  150.         return false;
  151.     }
  152.     switch (tempArray.length) {
  153.         case 2:
  154.             tempH=tempArray[0];
  155.             tempM=tempArray[1];
  156.             tempS="00";
  157.             break;
  158.         case 3:
  159.             tempH=tempArray[0];
  160.             tempM=tempArray[1];
  161.             tempS=tempArray[2];
  162.             break;
  163.     }
  164.     var tDateString = tempy + '/'+tempm + '/'+tempd+' '+tempH+":"+tempM+":"+tempS;
  165.     var tempDate = new Date(tDateString);
  166.     if (isNaN(tempDate)) {
  167.         return false;
  168.     }
  169.   if ((tempDate.getYear().toString()==tempy || tempDate.getYear()==parseInt(tempy,10)-1900) 
  170.     && (tempDate.getMonth()==parseInt(tempm,10)-1) 
  171.     && (tempDate.getDate()==parseInt(tempd,10)) 
  172.     && (tempDate.getHours().toString()==parseInt(tempH,10)) 
  173.     && (tempDate.getMinutes().toString()==parseInt(tempM,10)) 
  174.     && (tempDate.getSeconds().toString()==parseInt(tempS,10)))
  175.   {
  176.     return true;
  177.   }
  178.   else
  179.   {
  180.         alert('tDateString='+tDateString);
  181.     return false;
  182.   }
  183. }
  184. //激活输入组件的焦点
  185. function focusIt(obj){
  186.   try{
  187.     var ele = mtb;
  188.   }catch(e){
  189.         try{
  190.                 obj.focus();
  191.             return;
  192.             }catch(e){
  193.             return;
  194.             }
  195.   }
  196.   for (var i=0;i<ele.length;i++){
  197.     swH(i);
  198.         try{
  199.         obj.focus();
  200.         }catch(e){
  201.         continue;
  202.         }
  203.         break;
  204.   }
  205.   try{
  206.     obj.focus();
  207.   }catch(e){
  208.     return false;
  209.   }return true;
  210. }

 

本文出自:冯立彬的博客



 

JavaScript数据完整性验证:MD5哈希算法在前端的应用与实践 数据完整性验证是确保信息在传输或存储过程中未被篡改的关键技术,其核心原理是通过哈希算法生成数据的唯一“指纹”。哈希算法将任意长度数据映射为固定长度摘要,具备确定性、快速性和雪崩效应等特性,在数据校验、唯一标识等场景中具有重要技术价值。在前端开发领域,JavaScript实现MD5哈希计算成为常见需求,广泛应用于文件上传校验、API数据验证等场景。本文聚焦前端MD5实现,深入探讨Web Crypto API与第三方库等方案选型,并解析字符串编码、输出格式等核心细节,为开发者提供数据完整性验证的工程实践指南。 阅读详情

相关推荐

Golang JSON Schema验证:确保数据完整性的方法

在分布式系统、微服务架构及API开发中,数据完整性是系统稳定性的关键保障。JSON作为主流的数据交换格式,其结构的灵活性带来便利的同时,也增加了数据验证的复杂度。本文聚焦Golang生态中基于JSON Schema的验证方案,详细讲解如何通过标准化的Schema定义实现对JSON数据的类型检查、格式约束、语义验证等功能,覆盖从基础用法到高级特性的全流程实践。核心概念:解析JSON Schema的定义规范及Golang验证库的架构算法实现:通过go-jsonschema库演示验证流程的代码实现数学模型。

AI Agent Harness Engineering 1060

JavaScript完整性检查

1、7个“坑” &lt;!DOCTYPE html&gt; &lt;html lang="zh"&gt; &lt;head&gt; &lt;meta charset="UTF-8" /&gt; &lt;title&gt;JavaScript完整性检查&lt;/title&gt; &lt;/head&

weixin_34419321的博客 359

JavaScript表单验证技巧大全及实战

验证函数是表单验证中不可或缺的部分,它们负责对表单输入数据进行有效性检查。一个验证函数通常接受一个或多个输入值,并返回一个布尔值或验证结果对象,指示输入是否通过了验证。在许多编程语言和框架中,可以创建自定义验证函数或使用内置的验证方法。应用场景广泛,从简单的用户注册表单到复杂的在线交易和支付系统,验证函数都可以确保用户输入的信息符合既定的规则和格式。例如,电子邮件地址必须符合特定的格式,手机号码需要遵循特定的数字序列,密码应足够复杂以保证安全性。

weixin_42591413的博客 1163

js 对必填参数的完整性判断

// 参数判空 false不通过 true为通过 export ...

weixin_34189116的博客 1068

如何用Python实现SPEI指数计算?从数据准备到结果可视化完整指南

本文提供了一份完整的Python实现SPEI指数计算指南,涵盖从数据准备、潜在蒸散量计算到结果可视化的全流程。详细介绍了使用Thornthwaite方法计算PET、拟合三参数log-logistic分布以及标准化转换的核心算法,并提供了模块化代码和可视化方案,帮助用户构建可复用的干旱分析工具。

cola5的博客 269

不带DDR的ZYNQ使用OCM加载程序运行的方法

软件版本:Vivado Vitis2019.2 第一步: 在Vivado的ZYNQ Block Design时候不配置DDR 第二步: 在Vitis中: 1、 在Vitis中新建Platform,选择xsa文件: 2、 在xparameters.h中添加DDR的地址空间定义,如下: 3、 修改链接文件,修改每个段都到ram_0,因为ram_1空间全部给到应用程序 4、 修改fsbl工程的main.c,增加XPAR_PS7_DDR_0条件编译 5、 修改fsbl.h,重定义DDR_EN

hpf247的博客 5536

tcp节点之间 数据传输_确保使用节点js进行数据传输时的完整性和不可否认性

tcp节点之间 数据传输In this article, we will explain a few well known Cryptographic Primitives that ensures integrity, authenticity, and non-repudiation in data transmission using node.js. 在本文中,我们将解释一些众所周知的加密...

weixin_26636643的博客 895

腾讯云DBA面试(一面)

在第二阶段,根据RM返回的结果,如果涉及分布式事务的所有RM都返回可以提交, 则TM给RM发送commit的命令,每个RM实现自己的提交,同时释放锁和资源,然后RM反馈提交成功, TM完成整个分布式事务;根据事务所处的阶段,可以回滚到具体的版本,实现一致性。1.并发执行的事务,在prepare阶段,redo log先写文件缓存,第一个领头的事务,在等待n个事务后, 在第一个事务去刷写磁盘时,会把同组的其他的事务,也一起刷写到磁盘上,这样就减少了刷盘的次数,降低了磁盘的IOPS。分布式锁是怎么实现的?

u012565458的博客 1978

Web页面子资源完整性校验详细指南

时间过得好快,距离上一篇文章动手写一个简单的编译器:在JavaScript中使用Swift的尾闭包语法发布已经过去快半年了,这半年时间也一直在想着按时更新文章;但是因为工作和生活的琐事,没有能够坚持下来。有点惭愧,感觉之前年初立下的计划快要实现不了了。希望接下来的这一段时间能够坚持更新文章吧。 这次要跟大家分享的是关于Subresource Integrity(子资源完整性)的内容。如果平时对Web安全关注不是很多的话,可能没怎么听过这个术语。不知道也没关系,接下来我会跟大家一起来研究讨论一下这个内容,相信

dreamapplehappyapple的专栏 1764

ANPC三电平拓扑:两种调制方式解析

ANPC结构是基于“I”型NPC结构(下面讲NPC如不特殊说明,均指的是“I”型结构NPC)发展出来的一种改进型。我们在讲NPC结构的时候会谈到他的一个缺点就是损耗分布不均匀,会导致温升不均衡,进而限制模块的功率输出能力。而ANPC结构由于多了两个开关管以及相应的两个中性点换流回路(如下图),可以更加灵活任意的配置开关管可以使损耗没有那么的不均衡,从而能一定程度上提高模块的输出功率。ANPC拓扑结构图以及增加的环流回路。

IOTBOT的博客 9502

2025年最新自动化/控制保研夏令营&预推免面试真题分享(东南/浙大/华科清华)

笔者来2021级本科自动化专业,以下部分将介绍我在夏令营以及预推免期间发生经历和问题。

Control Everything 2646

终极JavaScript表单验证指南:10分钟快速上手validate.js

在现代Web开发中,表单验证是确保数据完整性和用户体验的关键环节。validate.js是一个轻量级JavaScript表单验证库,灵感来源于CodeIgniter框架,为开发者提供了简单易用的验证解决方案。本文将为您详细介绍如何快速上手使用validate.js,实现高效的表单验证功能。 ## 为什么选择validate.js? validate.js具有多项优势,使其成为表单验证的理想选择

gitblog_00875的博客 469

【立创EDA-PCB设计基础】6.布线铺铜实战及细节详解

本文进行布线铺铜实战及详解布线铺铜的细节

嵌入式阿齐Archie 4万+

终极指南:如何使用Crypto-JS实现数据完整性保护与加密验证方案

在当今数字化时代,数据传输和存储的安全性至关重要。**Crypto-JS**作为一款强大的JavaScript加密标准库,提供了完整的数据加密与完整性校验解决方案。本文将详解如何结合加密算法与校验机制,构建可靠的数据安全防护体系,即使是新手也能快速掌握这些实用技能。 ## 📚 什么是数据完整性?为什么它很重要? 数据完整性指数据在传输或存储过程中保持完整、未被篡改的特性。想象一下,当你发送一

gitblog_00050的博客 651

Autosar诊断实战系列02-Dem(DTC&Event)要点及配置开发详解

Dem模块及其与Dcm等其他模块的交互是整个诊断Stack的重中之重,本文先对与其他模块的交互逻辑进行介绍,有一定掌握后继续重点介绍配置部分的开发。

initiallizer的博客 3332

【宝藏级】全网最全的Pandas详细教程(2万字总结)

【回炉重造】Python之Pandas详细教程前言为什么要学习pandas?什么是Pandas?官网1. Pandas的索引操作索引对象Index {#索引对象index}1. Series和DataFrame中的索引都是Index对象2. 索引对象不可变,保证了数据的安全常见的Index种类Series索引 {#series索引}1. index 指定行索引名2. 行索引3. 切片索引4. 不连续索引5. 布尔索引DataFrame索引1. columns 指定列索引名2. 列索引3. 不连续索引高级索引

全网粉丝30W+,优快云、稀土掘金人工智能领域签约作者,人工智能、大模型、Python 爬虫,商务合作,请私信沟通。 6万+

JavaScript 表单验证

在实际应用中,我们可能会遇到更复杂的验证需求。例如,在注册表单中,可能需要同时验证用户名的独特性、邮箱的有效性以及密码的强度。// 用户名唯一性验证try {if (!errors.push('用户名已被占用');errors.push('用户名验证失败');// 邮箱有效性验证if (!errors.push('请输入有效的邮箱地址');// 密码强度验证if (!errors.push('密码强度不足');// 密码一致性验证errors.push('两次输入的密码不一致');

2401_86544677的博客 1202

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

validate.js核心验证器详解:从必填验证到复杂数据类型检查

validate.js是一款强大的声明式JavaScript验证库,它提供了丰富的验证器来满足各种数据验证需求。无论是简单的必填项检查,还是复杂的邮箱格式验证,validate.js都能轻松应对,帮助开发者构建可靠的数据验证逻辑。 ## 一、必填项验证(presence):确保关键数据不丢失 在表单验证中,必填项检查是最基础也最重要的环节。validate.js的`presence`验证器能够

gitblog_00436的博客 789

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

关键JavaScript进行表单验证:提升用户体验与数据完整性

在网页开发中,表单验证是确保用户输入有效数据的重要步骤。有效的表单验证不仅可以提高用户体验,还可以减少服务器端处理无效或错误数据的负担。本文将通过一个简单的示例,展示如何使用JavaScript进行关键的表单验证。

weixin_43822401的博客 979

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

通过JavaScript进行登录验证

在大部分页面的首页中,都会存在用户登录的输入框。当用户输入了个人信息后(一般为用户名和密码),页面的程序通过检索和验证,如果结果为真,则跳转到子页面,如果验证后结果为假,则提示重新输入信息。而这种验证的过程必须借助数据库以及网站开发的语言的支持。 首先请看下面的流程图,对这个验证的过程有一个初步的了解。      用户在登录页面填写用户名和密码信息后,当点击提交按钮后,这些

great_frank 的专栏 1万+

Element UI表格数据验证:Table数据完整性校验

在企业级应用开发中,数据表格(Table)作为信息展示与交互的核心组件,其数据完整性直接影响业务决策的准确性。Element UI作为基于Vue.js 2.0的主流UI组件库,提供了功能丰富的``组件,但原生并未集成完整的数据验证机制。本文将系统讲解如何基于Element UI Table构建企业级数据验证方案,解决数据录入错误、格式不一致、业务规则冲突等痛点问题。 ## 数...

gitblog_00940的博客 1057

html页面加密js,javascript怎么加密?

随着互联网的快速发展,网站客户端(浏览器)IE(ff)运行的javaSCRIPT代码常常被别人轻易的拷贝, 为了保护程序员自己的劳动成果,因此程序员不得不对想办法保护自己源代码-------javascript加密。一些JavaScript加密方法:1.base64加密(1)introductionbase64是网络上最常见的用于传输8bit字节码的编码方式之一,base64就是一种基于64个可打...

weixin_32382353的博客 1375

JSONModel验证机制终极指南:如何确保数据完整性与业务逻辑一致性

JSONModel作为iOS和macOS开发中强大的数据建模框架,其验证机制是确保应用数据完整性和业务逻辑一致性的关键。在移动应用开发中,JSON数据的正确性和有效性直接影响用户体验和系统稳定性。本文将深入探讨JSONModel的验证机制,帮助开发者构建更加健壮的数据处理流程。 ## 为什么JSONModel验证机制如此重要? 在移动应用开发中,网络请求返回的JSON数据往往存在各种不确定因素

gitblog_07491的博客 444

javascript干啥的_js可以为网页做什么

其次,AJAX可以提高网页的加载速度。例如,在一个导航菜单中,当用户悬停在某个菜单项上时,可以通过JavaScript实现菜单项的放大、颜色变化等效果,提供更加直观的反馈,增强用户的交互体验。比如,在一个新闻网站中,开发者可以使用JavaScript的history对象,让用户能够通过点击前进和后退按钮来浏览已访问的新闻页面,提升了用户浏览的便捷性。比如,在一个文章阅读网站中,开发者可以通过JavaScript获取URL中的文章ID,并根据该ID加载相应的内容,使得用户能够直接跳转到指定的文章页面。

2401_89213192的博客 1018

终极指南:如何使用govalidator确保数据库验证的数据完整性

在当今数据驱动的世界中,确保数据完整性是每个应用程序的核心需求。**govalidator**作为Go语言中最强大的验证库之一,为开发者提供了完整的验证和清理解决方案,帮助构建可靠的数据处理系统。 ## 🔍 什么是govalidator? **govalidator**是一个功能强大的Go语言包,专门用于字符串、结构体和集合的验证与清理。它基于著名的[validator.js](https:

gitblog_00937的博客 683
上一篇: 对一个可进行带括号、加减乘除运算类的分析
下一篇: Sybase常用配置参数
冯立彬
冯立彬 优质创作者: 编程框架技术领域 优质创作者: 编程框架技术领域
博客等级 码龄21年 5458粉丝 593原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值