物流网站查询网站设计公司费用
web/
2025/10/6 16:43:09/
文章来源:
物流网站查询,网站设计公司费用,广州专业网站设计企业,网站推广优化是什么意思简介
ISO/IEC 7064:2003 信息技术 安全技术 校验字符系统 密码学 Mod37 校验算法(Java和C#) ISO/IEC 7064 modulo 37-2
适用范围
1.1 本标准规定了一组校验字符系统#xff0c;它可以防止在复制或键人数据时产生的串的错误。串的长度 可以是固定的或是可变的#xff0c;包…简介
ISO/IEC 7064:2003 信息技术 安全技术 校验字符系统 密码学 Mod37 校验算法(Java和C#) ISO/IEC 7064 modulo 37-2
适用范围
1.1 本标准规定了一组校验字符系统它可以防止在复制或键人数据时产生的串的错误。串的长度 可以是固定的或是可变的包括以下字符集中的字符
a)数字(10个数字O9) b) 字母(26个字母AZ) c) 字母数字(字母和数字)。 串中嵌入的空格和特殊字符忽略不计。
本标准为生成校验字符和校验串产品规约了一致性要求这些产品采用了本标准所给出的系统。
这些校验字符系统能检查出下列错误
a) 所有的单一字符替换错误(即单个字符被另一个字符所替换如1234被错录为4234)
b)所有的或几乎所有的单一字符对换位置错误(即相邻两个字符或隔一个字符的两个单一字 符的位置互换如12345被错录为123 54或12 54 3)
c) 所有或几乎所有的循环移位错误(即整个串被向左或向右循环移位)
d) 大部分的双替换错误(即在同一串中分开的两处单一字符替换错误如1234567被错录为 72345 87)
e) 大部分的其他错误。
14本标准不包括专门为下列目的而设计的系统
a)既允许差错检测又允许自动校正 b)检测故意误用 c) 仅校验在机器之间交换的串。
15本标准用于各组织之间的信息交换极力推荐用于内部信息系统。
java 代码
package yc.util;/*** ISO/IEC 7064 modulo 37-2*/
public class Mod37Check {private final static String CHAR_SET 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ^;private final static int[] WEIGHTS {1, 3, 2, 1, 3, 2, 1, 3, 2, 1, 3, 2, 1, 3, 2, 1, 3, 2, 1, 3, 2, 1, 3, 2, 1};public static String CalculateCheckDigit(String input){//将字符串转成字符数组char[] chars input.toCharArray();String encoded;for (int i 0; i chars.length;i) {char c chars[i];int index CHAR_SET.indexOf(c);if (index0){encodedindex;}}if (encoded.length()0){return 0;}int sum 0;for (int i 0; i encoded.length(); i) {//将字符串转成int类型int cInteger.parseInt(encoded.substring(i,i1));sum c * WEIGHTS[ i % WEIGHTS.length];}int checkDigit sum % 37;if (checkDigit0){return 0;}else {var char_setCHAR_SET.substring(checkDigit,checkDigit1);return char_set;}}
}
C#代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace yunce.util
{/// summary/// ISO/IEC 7064 modulo 37-2/// /summarypublic class Mod37Check{private static readonly string CHAR_SET 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ^;private static readonly int[] WEIGHTS { 1, 3, 2, 1, 3, 2, 1, 3, 2, 1, 3, 2, 1, 3, 2, 1, 3, 2, 1, 3, 2, 1, 3, 2, 1 };/// summary/// Modulo37-2 检验码/// /summary/// param nameinput/param/// returns/returnspublic static string CalculateCheckDigit(string input){char[] chars input.ToCharArray();string encoded ;for (int i 0; i chars.Length; i){char c chars[i];int index CHAR_SET.IndexOf(c);if (index 0){encoded index.ToString();}}if (encoded.Length 0){return 0;}int sum 0;for (int i 0; i encoded.Length; i){sum int.Parse(encoded.Substring(i, 1)) * WEIGHTS[i % WEIGHTS.Length];}int checkDigit sum % 37;if (checkDigit 0){return 0;}else{return CHAR_SET.Substring(checkDigit - 1, 1);}}}
}
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/88012.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!