Jquery 如何实现ul中的ol排序?

JavaScript018

Jquery 如何实现ul中的ol排序?,第1张

如果想实现排序,你可以通过用ol的属性进行排序。下面是个小例子:

<body>

<ul id="ul">

    <ol id="1"><li>1111111</li></ol>

    <ol id="4"><li>2222222</li></ol>

    <ol id="3"><li>3333333</li></ol>

    <ol id="2"><li>4444444</li></ol>

</ul>

</body>

<script>

var oUl = document.getElementById('ul')

var aOl = oUl.children    //aOl 是一个元素集合,只是有数组的方法。但不具备sort

var arr = []

for(var i=0i<aOl.lengthi++)

{

arr.push(aOl[i])

}

arr.sort(function(a,b){return a.id - b.id})  //这里用了数组的sort排序。

for(var i=0i<arr.lengthi++)

{

oUl.appendChild(arr[i])   //重新加入oUl中。排序成功

}

</script>

上学时递小纸条,尤其是需要中间人传递时,是不是使用过一套约定的符号代替普通的文字?特别有必要!

广义来讲,保护信息的各种方式都属于加密范畴,而保护的形式、角度、等级和目标是多种多样的。

电视剧里,经常有材料被情敌偷偷修改然后蒙冤的场景。何解?

策略:让内容中每一个字节都参与一项运算得出一个结果记录下来,如果计算结果变了,说明内容被修改过。

这里运算得出的结果叫做摘要,这个算法叫消息摘要算法,也叫单向散列函数。算法的科学性很重要,常见的算法有:MD5、SHA1、SHA256、SHA512、HmacMD5、HmacSHA1、HmacSHA256 等。

这个,只能说难免会被别人看到。

策略:使用密钥变换内容,让别人看到也不知道为何物,通过密钥才可还原内容。

这种通过相同的密钥来加密和解密的算法,叫对称加密算法。常见算法DES、3DES(TripleDES)和AES(Advanced Encryption Standard)等。AES 根据密钥长度不同又分为AES-128 AES-192 AES-256 对应16 24 32 字节。

这些算法,通常是按块来进行加密的,如 16 个字节为一块。当最后一块不够 16 个字节时,通常是采用补齐的策略,补齐的方式也有不同讲究。

策略一,数据长度不对齐时使用0填充,否则不填充,但补的0解密后无法区分是补的还是原本就有的,只适合以\0结尾的字符串加密,此谓之 ZeroPadding。

策略二,补充的字节值设定为补充的数量,如要补充5个字节,则这5个字节的值都为 5,这样根据最后一个字节可得到填充数据的长度,在解密后可以准确删除填充的数据。但如果刚好整块无需补充,为了仍然满足最后一个字节表示填充的数据长度,填充一整块,值为块长度。此种方式有 PKCS7Padding,它假设数据长度需要填充n(n>0)个字节才对齐,那么填充n个字节,每个字节都是n;如果数据本身就已经对齐了,则填充一块长度为块大小的数据,每个字节都是块大小。PKCS5Padding,PKCS7Padding的子集,块大小固定为8字节。

分块加密时,每块采用完成相同的加密过程,则可以并行加密再拼接,但当内容中有多块相同的内容时加密结果会一样,而这种重复会为破解提供线索,于是多种加密模式被提出。以下是两种最常见的模式。

Electronic Code Book(ECB)

电子密码本模式

最基本的加密模式,也就是通常理解的加密,相同的明文将永远加密成相同的密文,无初始向量,容易受到密码本重放攻击,一般情况下很少用。

Cipher Block Chaining(CBC)

密码分组链接模式

明文被加密前要与前面的密文进行异或运算后再加密,因此只要选择不同的初始向量,相同的密文加密后会形成不同的密文,这是目前应用最广泛的模式。CBC加密后的密文是上下文相关的,但明文的错误不会传递到后续分组,但如果一个分组丢失,后面的分组将全部作废(同步错误)。

对称加密中,接收方需要知道密钥,这个密钥本身的保密就成为了问题。密钥泄漏,意味着正确解密的消息也变得不可靠,也许是伪造的。

策略:公开密钥,即发给我的消息,使用公开密钥加密,我收到之后只可用我的私有密钥解密。

此谓之非对称加密算法,一种强大的密钥保密方法。这离不开理论上的研究成果。

非对称加密算法需要两个密钥:公开密钥(publickey:简称公钥)和私有密钥(privatekey:简称私钥)。公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密。

为了验证是不是对的人,可以要求发送放对内容提取摘要,并使用其私钥加密,将结果附在后边作为签名一并发送。这样,就可以使用发送放的公钥来解密这个签名并验证其一致性,如果一致说明是对的人发过来的。此过程谓之签名验签。

使用最广泛的是RSA算法。

很多常见的加密算法在 CryptoJS 中有实现,首先,在控制台引入扩展脚本。

加密结果 U2FsdGVkX1/Ry7m4YU7aTXizLMAGhn2EwZf555rz8neh6FP6/4p9CUaZpnBxvOKT

解密过程

加密的内容为16进制数据时,可以利用以下方式将16进制字符串转换成字节数组。

计算结果 c6a13b37878f5b826f4f8162a1c8d879

CryptoJS 当前尚未支持 RSA,可以引入以下 JS 扩展。

使用公钥加密

OVNmfqDMAxHoiMbNHNQ4Olrb0BHGLHEPXM0EAJ/hTwEJsz+igrLIPnrqf1ABmWnoj6cOOcGNroYLa2xZ9/TkaF5UKG+H+RrjpbHHQVe3mWWlDsX9bZ/m8lP3izntwKHdklH+2vfeOlSJ3+PK3O6ILWvaVM4PVCzVo9lPiN7NkIE=

使用私钥解密

反过来使用私钥加密公钥解密也是可以的,只是一般的工具方法,只会提供私密生成签名,公钥验证签名,但这足够了。

更详细用法,请参考 https://github.com/travist/jsencrypt/

直接来看看二战期间的故事,以下内容引用自 https://zhidao.baidu.com/question/13366735.html