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

炫丽的网站西安高端网站建设

炫丽的网站,西安高端网站建设,网络建设方案总结,济南做网站实验目标: 掌握区块链中密码技术的工作原理。在基于Flask框架的服务端中实现哈希算法的加密功能。 实验内容: 构建Flash Web服务器,实现哈希算法、非对称加密算法的加密功能。 实验步骤: 哈希算法的应用:创建hash…

实验目标:

掌握区块链中密码技术的工作原理。在基于Flask框架的服务端中实现哈希算法的加密功能。

实验内容:

构建Flash Web服务器,实现哈希算法、非对称加密算法的加密功能。

实验步骤:

  1. 哈希算法的应用:创建hash_util.py文件,然后把相关代码输入文件,通过命令行执行如下命令“python hash_util.py”,得到”Hello World”哈希加密后结果。
  1. 引入hashlib 依赖包(默认已安装)
  2. 定义需要加密的变量“Hello World”
  3. 通过hashlib 的sha256 方法加密
  4. 最后输出加密结果

  1. 非对称密码算法的应用:创建crypto_util.py文件,然后把相关代码输入文件,实现ECC算法的签名与验签
  1. 安装ecdsa 依赖包,执行命令“pip install ecdsa”

  1. Ecdsa方法介绍:
  1. SigningKey/VerifyingKey
  2. s=sk.to_string()/SigningKey.from_string(s, curve)
  3. sk.to_pem() /SigningKey.from_pem()
  4. sign()/verify()

  1. 在服务器中实现加密功能
  1. 构建哈希算法的处理函数

在实验一simple_app项目中加入services.py,并在其中加入哈希算法的加密功能,相关代码如下:

import hashlib

def hash_encrypt(input):

    """

    使用哈希算法加密

    :param input: 客户端发送的数据

    :return: 返回给客户端的加密数据

    """

    hash_code = hashlib.sha256(input.encode()).hexdigest()

    return hash_code

  1. app.py文件中加入哈希算法处理的HTTP请求响应

@app.route('/encrypt', methods=['GET'])

def encrypt():

    """

    哈希函数加密

    :return: 加密的字典对象

    """

    data = request.args.get('data')

    res = services.hash_encrypt(data)

    return {

        'res': res

}

注意,一定要引用services

使用Postman验证接口正确性

实验

  1. 利用ECC实现对“学号姓名”的签名和验签。
from ecdsa import SigningKey, VerifyingKey, NIST256p
import hashlibdef generate_keys():"""生成ECC密钥对"""private_key = SigningKey.generate(curve=NIST256p)public_key = private_key.get_verifying_key()return private_key, public_keydef sign_message(message, private_key):"""使用私钥对消息进行签名"""# 对消息进行哈希message_hash = hashlib.sha256(message.encode()).digest()# 使用私钥签名signature = private_key.sign(message_hash)return signaturedef verify_signature(message, signature, public_key):"""使用公钥验证签名"""try:# 对消息进行哈希message_hash = hashlib.sha256(message.encode()).digest()# 验证签名public_key.verify(signature, message_hash)return Trueexcept:return Falsedef main():# 要签名的消息message = "lvy"# 生成密钥对private_key, public_key = generate_keys()# 签名signature = sign_message(message, private_key)# 验证签名is_valid = verify_signature(message, signature, public_key)# 打印结果print("消息:", message)print("私钥:", private_key.to_string().hex())print("公钥:", public_key.to_string().hex())print("签名:", signature.hex())print("验证结果:", "签名有效" if is_valid else "签名无效")# 尝试使用错误的消息验证wrong_message = "023301794114明浩东1"is_valid_wrong = verify_signature(wrong_message, signature, public_key)print("\n使用错误消息验证:")print("消息:", wrong_message)print("验证结果:", "签名有效" if is_valid_wrong else "签名无效")if __name__ == "__main__":main() 

2.利用HTTP接口实现GET加密消息为:学号+姓名。

from flask import Flask, jsonify, request
from ecdsa import SigningKey, VerifyingKey, NIST256p
import hashlib
import jsonapp = Flask(__name__)# 全局变量存储密钥对
private_key = None
public_key = None
signature = Nonedef generate_keys():"""生成ECC密钥对"""global private_key, public_keyprivate_key = SigningKey.generate(curve=NIST256p)public_key = private_key.get_verifying_key()return private_key, public_keydef sign_message(message):"""使用私钥对消息进行签名"""global private_key, signatureif private_key is None:private_key, _ = generate_keys()# 对消息进行哈希message_hash = hashlib.sha256(message.encode()).digest()# 使用私钥签名signature = private_key.sign(message_hash)return signaturedef verify_signature(message, signature):"""使用公钥验证签名"""global public_keyif public_key is None:_, public_key = generate_keys()try:# 对消息进行哈希message_hash = hashlib.sha256(message.encode()).digest()# 验证签名public_key.verify(signature, message_hash)return Trueexcept:return False@app.route('/encrypt', methods=['GET'])
def encrypt():"""通过GET参数获取要加密的数据"""data = request.args.get('data', 'lvy')  # 如果没有提供data参数,使用默认值# 对数据进行哈希加密encrypted = hashlib.sha256(data.encode()).hexdigest()return jsonify({"res": encrypted})@app.route('/get_encrypted_student_info', methods=['GET'])
def get_encrypted_student_info():"""获取加密后的学号和姓名信息"""student_info = "lvy"# 确保有密钥对if private_key is None:generate_keys()# 签名消息signature = sign_message(student_info)return jsonify({'status': 'success','student_info': student_info,'signature': signature.hex(),'public_key': public_key.to_string().hex()})@app.route('/generate_keys', methods=['GET'])
def api_generate_keys():"""生成新的密钥对"""private_key, public_key = generate_keys()return jsonify({'status': 'success','private_key': private_key.to_string().hex(),'public_key': public_key.to_string().hex()})@app.route('/sign', methods=['POST'])
def api_sign():"""对消息进行签名"""data = request.get_json()if not data or 'message' not in data:return jsonify({'status': 'error', 'message': '请提供消息内容'}), 400message = data['message']signature = sign_message(message)return jsonify({'status': 'success','message': message,'signature': signature.hex(),'public_key': public_key.to_string().hex()})@app.route('/verify', methods=['POST'])
def api_verify():"""验证签名"""data = request.get_json()if not data or 'message' not in data or 'signature' not in data:return jsonify({'status': 'error', 'message': '请提供消息和签名'}), 400message = data['message']signature_hex = data['signature']try:signature = bytes.fromhex(signature_hex)except:return jsonify({'status': 'error', 'message': '签名格式错误'}), 400is_valid = verify_signature(message, signature)return jsonify({'status': 'success','message': message,'is_valid': is_valid})if __name__ == '__main__':# 初始化密钥对generate_keys()app.run(debug=True, port=5000) 


文章转载自:

http://5pk1OSd6.mhLsx.cn
http://ACxFZE1Q.mhLsx.cn
http://srqCPQsf.mhLsx.cn
http://F1bMuto0.mhLsx.cn
http://LzhqxnTu.mhLsx.cn
http://RforZHf9.mhLsx.cn
http://zYWsIkGb.mhLsx.cn
http://muXYFp0E.mhLsx.cn
http://qPXB7AFr.mhLsx.cn
http://ZtSioM7K.mhLsx.cn
http://PlvLCZhm.mhLsx.cn
http://9AhpG3ne.mhLsx.cn
http://LAcmSWj9.mhLsx.cn
http://cHk5lVCW.mhLsx.cn
http://4uqfqN8n.mhLsx.cn
http://iEMe4znz.mhLsx.cn
http://ptDbYJsP.mhLsx.cn
http://8rQ1pfPF.mhLsx.cn
http://dJuPl1xZ.mhLsx.cn
http://rWDudNnK.mhLsx.cn
http://vyjs1HqG.mhLsx.cn
http://3M3L3aNP.mhLsx.cn
http://PKLgAPek.mhLsx.cn
http://NxoZNfSU.mhLsx.cn
http://EQc9GOgo.mhLsx.cn
http://jlatlXAu.mhLsx.cn
http://XKgbcBE9.mhLsx.cn
http://wlqumzDr.mhLsx.cn
http://D2jaFGIi.mhLsx.cn
http://H74agfAh.mhLsx.cn
http://www.dtcms.com/wzjs/771657.html

相关文章:

  • 崇礼做网站的公司宁波seo深度优化平台有哪些
  • 中小企业网站建设示范平台对网站备案的认识
  • 手机网站导航设计模板品牌红酒网站建设
  • 五个常见的电子商务网站网址即速应用小程序官网
  • 网站页脚有什么作用东莞智通人才网官网登录
  • 外贸建站教程网页开发工具的作用有多大
  • 网站备案升级58企业名录企业黄页
  • 网站推广公司认准乐云seo爱辉网站建设
  • html源码网站建设中qq 互联网站开发代码
  • 上传文档到网站上怎么做网站设计要素
  • 多平台网站设计实例湖南省住房与城乡建设部网站
  • 做企业网站的合同网页升级紧急通知在哪里看
  • 简单网站建设推荐小说手机网站建设
  • 郑州外贸网站建设哪家好找工程项目
  • 天津网站排名优化腾讯合作网站建设有哪些公司
  • 创意新颖的产品设计seo网络营销外包
  • 腾讯云网站建设流程图在婚恋网站做翻译好吗
  • 清华大学精品课程网站怎么注销公司法人身份
  • 旅游网站建设策划书范文济南制作网站公司
  • 彩票网站如何做wordpress 备案信息修改
  • 网站的反链要怎么做php 网站反盗链
  • 网站快照是自己做的吗潮州网络推广公司
  • uzi视频网站谁做的莆田百度seo公司
  • wordpress入门建站教程二科讯cms网站管理系统kesioncms
  • 免费的行情网站app大全下载高端网站案例欣赏
  • 天河区pc端网站建设网站推广服务具体内容包括哪些
  • 做网站定金是多少钱实体店线上线下运营模式
  • 巩义服务专业网站建设百度竞价包年推广是怎么回事
  • 公司网上注册在哪个网站南京建设局网站首页
  • php做网站首页的代码网站开发必须要用js