js案例(星级评论&明密文切换)

星级评论&明密文切换(事件委托)

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		
		<title></title>
		
		<style>
			.active{
				color: red;
			}
		</style>
	</head>
	<body>
		<div class="wrapper">
		
			<span class="active"></span>
			
			<span></span>
			
			<span></span>
			
			<span></span>
			
			<span></span>
		</div>
		
		密码:<input type="password"><button>切换</button>
		
		<script>
			var _wrapper=document.querySelector(".wrapper");
			
			var _spans=document.querySelectorAll("span");
			
			_wrapper.onclick=function(event){
			
				//寻找事件源
				var target=event.srcElement||event.target;
				
				if(target.nodeName=="SPAN"){
				
					//找到span对应点击的index
					var index=Array.from(_spans).findIndex(function(tag){
					
						return tag==target;
					})
					
					//index之前的添加active,index之后的取消
					for (var i = 0; i < _spans.length; i++) {
					
						if(i<=index){
						
							_spans[i].className="active";
							
						}else{
						
							_spans[i].className="";
						}
					}
				}
			}
			
			//明文密文切换
			var _button=document.querySelector("button");
			var _input=document.querySelector("input");
			
			_button.onclick=function(){
			
				if(_input.type=="password"){
				
					_input.type="text";
					
				}else{
				
					_input.type="password";
					
				}
			}
		</script>
	</body>
</html>

效果图:
在这里插入图片描述
在这里插入图片描述

以下是一个使用Hill密码加密和解密随机文的示例代码。请注意,由于Hill密码需要一个密钥矩阵,因此在此示例中,我们使用了numpy库来处理矩阵运算。 ```python import numpy as np # 定义 Hill 密码的加密和解密函数 def hill_encrypt(plain_text, key_matrix): # 将文转换为数字向量 plain_text = plain_text.upper().replace(' ', '') plain_text = [ord(char) - 65 for char in plain_text] plain_text = np.array(plain_text) plain_text.resize(len(plain_text) + (len(plain_text) % key_matrix.shape[0]), refcheck=False) # 将密钥矩阵应用于文向量 cipher_text = '' for i in range(0, len(plain_text), key_matrix.shape[0]): vec = plain_text[i:i + key_matrix.shape[0]] enc_vec = np.dot(key_matrix, vec) % 26 for val in enc_vec: cipher_text += chr(val + 65) return cipher_text def hill_decrypt(cipher_text, key_matrix): # 将密文转换为数字向量 cipher_text = cipher_text.upper().replace(' ', '') cipher_text = [ord(char) - 65 for char in cipher_text] cipher_text = np.array(cipher_text) # 求密钥矩阵的逆矩阵 det = int(np.round(np.linalg.det(key_matrix))) inv_det = -1 for i in range(26): if (i * det) % 26 == 1: inv_det = i break if inv_det == -1: return 'Error: Invalid key matrix' key_matrix = key_matrix * det key_matrix = key_matrix % 26 key_matrix = np.round(inv_det * key_matrix) % 26 # 将逆矩阵应用于密文向量 plain_text = '' for i in range(0, len(cipher_text), key_matrix.shape[0]): vec = cipher_text[i:i + key_matrix.shape[0]] dec_vec = np.dot(key_matrix, vec) % 26 for val in dec_vec: plain_text += chr(val + 65) return plain_text # 生成随机的密钥矩阵 key_matrix = np.random.randint(0, 26, size=(3, 3)) # 加密文 plain_text = 'This is a test message' cipher_text = hill_encrypt(plain_text, key_matrix) print('文:', plain_text) print('密钥矩阵:\n', key_matrix) print('密文:', cipher_text) # 解密密文 decrypted_text = hill_decrypt(cipher_text, key_matrix) print('解密后的文:', decrypted_text) ``` 这个示例代码会生成一个随机的 3x3 密钥矩阵,并使用它来加密一个测试消息。您可以更改密钥矩阵的大小来更改矩阵大小的整数倍。请注意,如果您的密钥矩阵不是可逆矩阵,则无法解密密文
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值