当前位置: 首页 > news >正文

电商小程序定制双鸭山seo

电商小程序定制,双鸭山seo,app免费软件,用户界面设计模板文章目录 概述什么是编码编码分类ASCII码 #xff08;最多只能有128个字符#xff09;Unicode #xff08;用于表示世界上几乎所有的文字和符号#xff09;URL编码 #xff08;解决服务器只能识别ASCII字符的问题#xff09;实现#xff1a;编码_URLEncoder实现#xf… 文章目录 概述什么是编码编码分类ASCII码 最多只能有128个字符Unicode 用于表示世界上几乎所有的文字和符号URL编码 解决服务器只能识别ASCII字符的问题实现编码_URLEncoder实现 解码_URLDecoder小结 Base64编码实现编码_Base64.getEncoder()实现解码_Base64.getDecoderbyte[]数组长度不是3的整数倍Base64.getUrlEncoder()小结 总结 概述 在计算机系统中加密与安全是至关重要的概念。 想象一下当B想要发送一封邮件给A时邮件可能在传送过程中遭到黑客的窃听这就需要防止信息泄露。此外黑客还可能篡改邮件内容因此A需要确保她能够辨别出邮件是否被篡改。最后黑客可能会冒充B发送虚假邮件给A这需要A有能力辨别真伪。 为了应对这些潜在的安全威胁我们需要采取以下三项措施 防止窃听防止篡改防止伪造 计算机加密技术旨在实现上述目标。现代计算机密码学建立在严格的数学理论基础上并逐渐发展成为一门科学。对于大多数开发者来说设计安全的加密算法是一项艰巨的任务验证加密算法的安全性则更加困难。目前认为安全的加密算法也只是尚未被攻破。因此为了编写安全的计算机程序我们应遵循以下原则 不要设计自己的加密算法不要自行实现已有的加密算法不要修改已有的加密算法 接下来我们将一起探讨最常用的加密算法以及Java实现。 什么是编码 编码是一种将符号、文字或其他数据转换为特定格式或标准的过程。 编码是计算机科学中的一个重要概念它指的是将符号、文字或其他数据转换为特定格式或标准的过程。这种转换是为了方便存储、传输和处理数据。编码可以涵盖多种形式包括数字编码、字符编码、图像编码、音频编码等。 数字编码是将数字转换为计算机可以理解的二进制形式的过程通常涉及将十进制数字转换为二进制或其他进制的表示形式。 字符编码是将字符映射到数字或比特序列的过程以便计算机能够处理和存储文本数据。常见的字符编码包括ASCII美国信息交换标准代码、Unicode等。 图像编码是将图像数据转换为计算机可识别的格式的过程常见的图像编码包括JPEG、PNG、GIF等。 音频编码是将声音数据转换为数字形式的过程以便计算机可以处理和存储音频数据。常见的音频编码包括MP3、AAC、WAV等。 通过编码我们能够将各种类型的数据转换为计算机可以处理的形式从而实现数据的存储、传输和处理。 编码分类 ASCII码 最多只能有128个字符 ASCII码American Standard Code for Information Interchange美国信息交换标准代码 就是一种常见的字符编码标准。在ASCII码中每个字符都被赋予一个唯一的数值表示通常是一个字节8位。 例如字母’A’的ASCII编码是十六进制的0x41字母’B’是0x42字母’C’是0x43以此类推。ASCII码包含了标准的英文字母、数字、标点符号以及一些控制字符的编码共计128个字符。 下面是一些常见字符的ASCII编码示例 字符ASCII编码A0x41B0x42C0x43D0x44…… 字母’A’的ASCII编码为0x41这是因为ASCII编码是一种固定长度的字符编码标准用一个字节8位表示一个字符。在ASCII编码中大写字母’A’的编码是65换算成十六进制就是0x41。 ASCII编码是根据英语字母表中的顺序进行编码的因此大写字母’A’在ASCII编码中是排在字母表的第一个位置其对应的十进制数值为65换算成十六进制即为0x41。 ASCII码对照表 二进制十进制十六进制字符/缩写解释00000000000NUL (NULL)空字符00000001101SOH标题开始00000010202STX正文开始00000011303ETX正文结束00000100404EOT传输结束00000101505ENQ请求00000110606ACK回应/响应/收到通知00000111707BEL响铃00001000808BS退格00001001909HT水平制表符00001010100ALF/NL换行键00001011110BVT垂直制表符00001100120CFF/NP换页键00001101130DCR回车键00001110140ESO不用切换00001111150FSI启用切换000100001610DLE数据链路转义000100011711DC1/XON设备控制1/传输开始000100101812DC2设备控制2000100111913DC3/XOFF设备控制3/传输中断000101002014DC4设备控制4000101012115NAK无响应/非正常响应/拒绝接收000101102216SYN同步空闲000101112317ETB传输块结束/块传输终止000110002418CAN取消000110012519EM已到介质末端/介质存储已满/介质中断00011010261ASUB替补/替换00011011271BESC逃离/取消00011100281CFS文件分割符00011101291DGS组分隔符/分组符00011110301ERS记录分离符00011111311FUS单元分隔符001000003220(Space)空格001000013321!001000103422001000113523#001001003624$001001013725%001001103826001001113927’001010004028(001010014129)00101010422A*00101011432B00101100442C,00101101452D-00101110462E.00101111472F/001100004830000110001493110011001050322001100115133300110100523440011010153355001101105436600110111553770011100056388001110015739900111010583A:00111011593B;00111100603C00111101613D00111110623E00111111633F?010000006440010000016541A010000106642B010000116743C010001006844D010001016945E010001107046F010001117147G010010007248H010010017349I01001010744AJ01001011754BK01001100764CL01001101774DM01001110784EN01001111794FO010100008050P010100018151Q010100108252R010100118353S010101008454T010101018555U010101108656V010101118757W010110008858X010110018959Y01011010905AZ01011011915B[01011100925C\01011101935D]01011110945E^01011111955F_011000009660011000019761a011000109862b011000119963c0110010010064d0110010110165e0110011010266f0110011110367g0110100010468h0110100110569i011010101066Aj011010111076Bk011011001086Cl011011011096Dm011011101106En011011111116Fo0111000011270p0111000111371q0111001011472r0111001111573s0111010011674t0111010111775u0111011011876v0111011111977w0111100012078x0111100112179y011110101227Az011110111237B{011111001247C|011111011257D}011111101267E~011111111277FDEL删除 Unicode 用于表示世界上几乎所有的文字和符号 Unicode是一种广泛使用的字符编码标准用于表示世界上几乎所有的文字和符号。相比于ASCII编码的128个字符Unicode可以表示更多的字符包括中文、日文、阿拉伯文等。 中文的Unicode编码示例如下 汉字Unicode编码UTF-8编码中0x4e2d0xe4b8ad文0x65870xe69687编0x7f160xe7bc96码0x78010xe7a081……… 另外UTF-8是一种变长编码用于将Unicode字符编码成字节序列。对于英文字符UTF-8使用一个字节表示而对于中文等Unicode字符则需要多个字节来表示。例如汉字’中’的UTF-8编码是0xe4b8ad它需要3个字节来表示。 UTF-8编码的复杂性在于它是一种不定长编码字符的编码长度取决于Unicode编码的范围。但是通过给定字符的Unicode编码可以推算出它在UTF-8编码中所占用的字节数。 URL编码 解决服务器只能识别ASCII字符的问题 URL编码是一种用于在URL中传输数据时使用的编码方式。它通常被用于对URL的参数部分进行编码以确保传输的数据符合URL的规范。举例来说 如果我们想在URL中传输非ASCII字符比如中文或日文等由于许多服务器只能识别ASCII字符因此我们需要对这些非ASCII字符进行编码。URL编码就是为了解决这个问题而设计的。 URL编码的规则如下 对于A~Z、a~z、0~9以及-、_、.、*这些字符保持不变对于其他字符首先转换为其对应的UTF-8编码然后将每个字节表示为%XX的形式。URL编码总是使用大写字母表示 举例来说如果字符中的UTF-8编码是0xe4b8ad那么它的URL编码就是%E4%B8%AD 举个例子 https://www.artisan.com/s?wd%E4%B8%AD%E6%96%87其实就是 https://www.artisan.com/s?wd中文 实现编码_URLEncoder package com.artisan.securityalgjava.urlencode;import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import java.net.URLEncoder; import java.nio.charset.StandardCharsets;/*** author 小工匠* version 1.0* mark: show me the code , change the world*/ public class UrlEncoderTest {public static void main(String[] args) throws UnsupportedEncodingException {// 编码String result URLEncoder.encode(中文!, StandardCharsets.UTF_8.toString());System.out.println(result);} } 中的URL编码是%E4%B8%AD文的URL编码是%E6%96%87!虽然是ASCII字符也要对其编码为%21 和标准的URL编码稍有不同URLEncoder把空格字符编码成而现在的URL编码标准要求空格被编码为%20 服务器都可以处理这两种情况 实现 解码_URLDecoder URL编码的字符串对其进行解码还原成原始字符串 // 解码 String decode URLDecoder.decode(%E4%B8%AD%E6%96%87%21, StandardCharsets.UTF_8.toString()); System.out.println(decode);小结 URL编码是编码算法不是加密算法。URL编码的目的是把任意文本数据编码为%前缀表示的文本编码后的文本仅包含A~Za~z0~9-_.*和%便于浏览器和服务器处理。 Base64编码 Base64 编码是一种将二进制数据编码为文本格式的方法它可以将任意长度的二进制数据转换为纯文本并且只包含一组特定的字符集包括 A~Z、a~z、0~9、、/、。 Base64 编码的原理是将 3 字节的二进制数据按照 6 位一组进行分组然后将每组 6 位的二进制数转换为对应的整数再根据整数对应的索引查表将索引对应的字符拼接起来得到编码后的字符串。 具体步骤如下 将原始二进制数据每 3 个字节分为一组。将每组 3 个字节转换为 4 个 6 位的二进制数。将每个 6 位的二进制数转换为对应的整数。将每个整数使用查表的方式映射到对应的字符集合中的字符。将得到的字符拼接成一个字符串作为 Base64 编码结果。 由于 Base64 编码的特性它常用于在网络上传输数据例如在电子邮件中传输二进制文件或在网页中嵌入图片等。由于其将二进制数据编码为文本的特点使得它可以直接作为文本传输而无需担心编码后的数据会包含特殊字符或控制字符。 举个例子3个byte数据分别是e4、b8、ad按 6 bit分组得到39、0b、22、2d 6位整数的范围总是0~63所以能用64个字符表示字符A~Z对应索引0~25字符a~z对应索引26~51字符0~9对应索引52~61最后两个索引62、63分别用字符和/表示 实现编码_Base64.getEncoder() package com.artisan.securityalgjava.base64;import java.util.Arrays; import java.util.Base64;/*** author 小工匠* version 1.0* mark: show me the code , change the world*/ public class Base64Test {public static void main(String[] args) {// 创建一个包含中文字符 中 的字节数组byte[] bytes {(byte) 0xe4, (byte) 0xb8, (byte) 0xad};// 使用 Base64 编码器将字节数组转换为 Base64 字符串String result Base64.getEncoder().encodeToString(bytes);System.out.println(result);} } 实现解码_Base64.getDecoder package com.artisan.securityalgjava.base64;import java.util.Arrays; import java.util.Base64;/*** author 小工匠* version 1.0* mark: show me the code , change the world*/ public class Base64Test {public static void main(String[] args) {// 创建一个包含中文字符 中 的字节数组byte[] bytes {(byte) 0xe4, (byte) 0xb8, (byte) 0xad};// 使用 Base64 编码器将字节数组转换为 Base64 字符串String result Base64.getEncoder().encodeToString(bytes);System.out.println(result);// 使用 Base64 解码器将 Base64 字符串解码为字节数组byte[] decode Base64.getDecoder().decode(result);System.out.println(Arrays.toString(decode));} } 将包含中文字符 “中” 的字节数组进行 Base64 编码然后再解码回原始字节数组并打印结果。 byte[]数组长度不是3的整数倍 如果输入的byte[]数组长度不是3的整数倍真么办这种情况下需要对输入的末尾补一个或两个0x00编码后在结尾加一个表示补充了1个0x00加两个表示补充了2个0x00解码的时候去掉末尾补充的一个或两个0x00即可。 实际上因为编码后的长度加上总是4的倍数所以即使不加也可以计算出原始输入的byte[] 看代码 import java.util.Arrays; import java.util.Base64;public class Base64Test {// 定义一个静态方法用于测试 Base64 编码和解码static void testCase() {// 输入的字节数组包含一个中文字符和一个 ASCII 字符byte[] input new byte[] { (byte) 0xe4, (byte) 0xb8, (byte) 0xad, 0x21 };// 使用 Base64 编码器将字节数组转换为 Base64 字符串String b64encoded Base64.getEncoder().encodeToString(input);// 使用 Base64 编码器进行无填充的 Base64 编码String b64encoded2 Base64.getEncoder().withoutPadding().encodeToString(input);// 打印两种编码结果System.out.println(Base64 编码结果1: b64encoded);System.out.println(Base64 编码结果2: b64encoded2);// 使用 Base64 解码器将 Base64 字符串解码为字节数组byte[] output Base64.getDecoder().decode(b64encoded2);// 打印解码后的字节数组System.out.println(解码后的字节数组: Arrays.toString(output));}public static void main(String[] args) {// 调用测试方法testCase();} } Base64.getUrlEncoder() 标准的 Base64 编码在某些场景下不适合在 URL 中使用因为它会包含字符 、/ 和 而这些字符在 URL 中可能会引起解析错误或歧义。 为了解决这个问题可以使用一种针对 URL 的 Base64 编码它对标准的 Base64 编码做了简单的修改即将 替换为 -将 / 替换为 _从而避免了在 URL 中可能引起问题的字符。 这种修改后的 Base64 编码仍然可以通过标准的 Base64 解码器进行解码因为这两种编码方式只是字符替换的差异不影响原始数据的编码规则和解码逻辑。 static void urlEncoder() {// 创建一个字节数组作为输入数据byte[] input new byte[]{0x01, 0x02, 0x7f, 0x00};// 使用 URL 安全的 Base64 编码器将字节数组转换为 Base64 字符串String result Base64.getUrlEncoder().encodeToString(input);System.out.println(URL 编码结果: result);// 使用 URL 安全的 Base64 解码器将 Base64 字符串解码为字节数组byte[] decode Base64.getUrlDecoder().decode(result);System.out.println(解码后的字节数组: Arrays.toString(decode)); } 演示了如何使用 URL 安全的 Base64 编码器将字节数组进行编码以及如何使用相应的解码器将编码后的 Base64 字符串解码回原始的字节数组。URL 安全的 Base64 编码会将 替换为 -将 / 替换为 _以避免在 URL 中可能引起问题的字符。 0x01, 0x02, 0x7f, 0x00 是十六进制表示法表示了四个字节的值。在 Java 中0x 前缀表示后面的数字是十六进制数。 0x01 表示十进制数值为 10x02 表示十进制数值为 20x7f 表示十进制数值为 1270x00 表示十进制数值为 0 因此input 这个字节数组包含了四个字节分别是 1、2、127 和 0。 小结 Base64 编码是一种常用的将二进制数据转换为文本数据的方法适用于需要在文本环境中传输二进制数据的场景比如电子邮件、XML 数据传输等。 然而 Base64 编码会将原始数据的长度增加约 1/3这会降低传输效率。因此在一些对传输效率要求较高的场景下可能会选择其他更高效的编码方式比如 Base32、Base48 或 Base58 编码。这些编码方式可以根据实际需求选择字符集合的大小以权衡编码效率和字符集合大小之间的关系。不过无论是哪种编码方式它们都是一种编码算法而不是加密算法因为它们不会对数据进行加密只是将数据转换成不同的形式。 总结 URL 编码是一种编码算法其目的是将任意文本数据编码为 % 前缀表示的文本形式以便在网络中传输特别是用于浏览器和服务器之间的通信以处理一些特殊字符或者非 ASCII 字符。 Base64 编码同样是一种编码算法它将任意二进制数据编码为文本形式方便在文本环境中传输但编码后的数据量会增加原始数据的约 1/3。这种编码在很多场景中使用比如电子邮件、XML 数据传输等以便在文本协议中传输二进制数据。 虽然它们都是编码算法而不是加密算法但它们在不同的场景中有着不同的用途和目的。
http://www.pierceye.com/news/237017/

相关文章:

  • 做一个公司网站一般需要多少钱营销型网站功能表
  • 为什么菜市场不可以做网站河南阿里巴巴网站建设
  • asp.net动态的网站开发手机海报制作免费软件
  • 网站建设前准备龙岗网站优化公司案例
  • 做流量哪个网站好滨州j建设局网站投诉电话
  • 空白网站怎么建wordpress 邮箱订阅
  • 乡镇网站建设自查报告做企业门户网站要准备哪些内容
  • 百度做推广一般要多少钱相城seo网站优化软件
  • 博客和网站的区别贵阳网站推广优化公司
  • 专业做公司网站的机构时彩网站开发
  • 网站 建设设计深圳网站建设交易
  • 网站建设氵金手指下拉十二网页设计有啥教程
  • 物流企业网站建设策划书6wordpress 搜索 很慢
  • 青岛网站设计选哪家南海区住房城乡建设和水务局网站
  • 济南冰河世纪网站建设手机可以搭建网站吗
  • 网站建设论文总结wordpress文章排序方式
  • 织梦程序来搭建网站人才招聘网最新招聘信息
  • 网站建设 客户定位支付网站建设费会计分录
  • 深圳网站设计工作室广告公司名字 三个字
  • 长沙门户网站广告网站设计公司
  • 余姚网站建设的公司wordpress 开发文档
  • 怎么建设一个微信网站莱芜金点子最新招工信息
  • 石家庄网站排名优化wordpress修改布局
  • 景安服务器管理助手如何备份网站国外做图标网站
  • 网站轮播怎么做石家庄网站建设规划
  • 免费软件网站下载深圳网站开发哪个公司好
  • 建设项目验收网站公示内网门户网站建设方案
  • 滨海做网站哪家最好宝安附近做网站公司
  • 详情页的五大模块东莞网站优化科技有限公司
  • 南阳建设网站哪家好昆明网站服务