实验二 电子公文传输系统安全-进展2


实验二 电子公文传输系统安全-进展2

对于电子公文系统中的文件采用了国密算法SM2加密

SM2_PRIVATE_KEY = '00B9AB0B828FF68872F21A837FC303668428DEA11DCD1B24429D0C99E24EED83D5'
        SM2_PUBLIC_KEY = 'B9C9A6E04E9C91F7BA880429273747D7EF5DDEB0BB2FF6317EB00BEF331A83081A6994B8993F3F5D6EADDDB81872266C87C018FB4162F5AF347B483E24620207'
        sm2_crypt = sm2.CryptSM2(public_key=SM2_PUBLIC_KEY, private_key=SM2_PRIVATE_KEY)

        str1_bytes = bytes(password, encoding="utf8")
        str1_sm2en = sm2_crypt.encrypt(str1_bytes)
        print(str1_sm2en, len(str1_sm2en))

        article = Document(name=title, person=user, office=office, type=type, Classification=sec,
                           time=now, img=image, lyrics=summary, file=myFile, label_id=type_id, key=str1_sm2en)
        article.save()

对于数据库口令,我们小组采用的是django进行加密
整个流程(如:django默认的登陆流程):

当用户发起一个登陆请求时,会首先进入中间件,执行重要的 (SessionMiddleware、AuthenticationMiddleware)
然后进入视图进行表单 AuthenticationForm 校验(用户名、密码长度等),执行authenticate方法。
表单校验通过的username,查询数据库,通过Hasher(加密算法)进行密码对比。
密码校验成功写session、cookie,跳转到落地页。
如果是登陆状态进入到登陆页面,检查到用户时登陆状态,直接跳转到落地页。

加密函数使用:

Django使用 PASSWORD_HASHERS 设置来选择算法,PASSWORD_HASHERS 是settings配置文件中的一个配置项,这是一个 Django 支持的*哈希算法类列表 ,
第一个条目将被用来存储密码。如果你想使用不同算法,你需要修改 PASSWORD_HASHERS ,
在列表中首选列出你的算法
这就有了数据库里的口令加密结果:

下周计划
1、设计将加密与摘要计算的算法封装进系统代码里
2、学习django调用其他加密算法(如SM3)的方法

相关