flutter 加密安全,不了解这些多线程的基础知识很难学懂网络安全

}

String _stepThree(String str) {
return str;
}

String _inverse(String tag) {
String res = ‘’;
List searchKeywords =
List.generate(tag.length, (index) => tag[index]);
Iterable array = searchKeywords.reversed;
for (var e in array) {
res = ‘ r e s res rese’;
}
return res;
}

String _ivStepOne() {
String res = ‘’;
String map = _generateMd5(chatSign) + _generateMd5(nickName);
int index = _gameIdSort[_gameIdSort.length - 2];
while (res.length < 50) {
res += map[index];
index++;
}
index = 0;
return res;
}

String _ivStepTwo() {
String res = ‘’;
String map = _generateMd5(_inverse(chatSign)) + _generateMd5(chatSign);
int index = _gameIdSort[_gameIdSort.length - 1];
while (res.length < 50) {
res += map[index];
index++;
}
index = 0;
return _inverse(res);
}

/// 字符串转 十六进制
String _strToHex(String str) {
List charCodes = str.runes.toList();
return charCodes.map((code) => code.toRadixString(16)).join(‘’);
}

/// 字符串转 base64
String _encodeBase64(String data) {
return base64Encode(utf8.encode(data));
}

/// base64转 普通字符
String _decodeBase64(String data) {
return String.fromCharCodes(base64Decode(data));
}

String _generateMd5(String str) {
return md5.convert(utf8.encode(str)).toString();
}

int _magic(int num) {
if (num < 3) {
return 1;
} else {
return _magic(num - 1) + _magic(num - 2);
}
}
}

调用的地方:

MatchRequestData data = MatchRequestData (
gameId: userArray[i][‘gameID’],
chatSign: userArray[i][‘chatSign’],
nickName: userArray[i][‘nickName’],
);

//需要传递给后台的 内容
Map datum = {
‘inTrust’: ‘TRUE’,
‘time’: DateTime.now().millisecondsSinceEpoch,
‘GameID’: userArray[i][‘gameID’],
‘nickName’: userArray[i][‘nickName’],
‘MachineCode’:
md5.convert(utf8.encode(userArray[i][‘gameID’])).toString(),
‘sign’: md5
.convert(
utf8.encode(userArray[i][‘gameID’] + userArray[i][‘chatSign’]))
.toString(),
};

String res = data.generateCode(jsonEncode(datum));

服务端的数据解密:

服务端为 .net 框架:

对应于加密算法写的解密算法:

using System;
using System.Collections.Generic;
using System.Security.Cryptography;
using System.Text;

namespace ToMatch
{
public class MatchEncrypt
{
private string gameID;
private string chatSign;
private string nickName;
private List idSort;

    /// <summary>
    /// 匹配构造函数
    /// </summary>
    /// <param name="gameId">GameID</param>
    /// <param name="chatSign">签名</param>
    /// <param name="nickName">昵称</param>
    public MatchEncrypt(string gameId, string chatSign, string nickName)

{
this.gameID = gameId;
this.chatSign = chatSign;
this.nickName = nickName;

        this.idSort = new List<int>();
        string idStr = int.Parse(this.gameID).ToString();
        for (int i = 0; i < idStr.Length; i++)
        {
            this.idSort.Add((int)Char.GetNumericValue(idStr[i]));
        }
        this.idSort.Sort();
    }




    private String IvStepOne {
        get {
            String res = "";
            String map = Md5Hash(chatSign) + Md5Hash(nickName);
            int index = idSort[idSort.Count - 2];
            while (res.Length < 50)
            {
                res += map[index];
                index++;
            }
            return res;
        }
    }

    private String IvStepTwo
    {
        get
        {
            String res = "";
            String map = Md5Hash(AESHelper.Inverse(chatSign),false) +

Md5Hash(chatSign,false);
int index = idSort[idSort.Count - 1];
while (res.Length < 50)
{
res += map[index];
index++;
}
return AESHelper.Inverse(res);
}
}

    /// <summary>
    /// 解密客户端内容
    /// </summary>
    /// <param name="code">密文</param>
    /// <returns></returns>
    public string Resolver(string code) {

        //第一阶段解密内容
        string resStepOne = StepOne(code);

        if (resStepOne.Length > 0)
        {
            //Console.WriteLine("第一解密 result:" + resStepOne);
            //第二阶段解密
            string resSteptwo = Steptwo(resStepOne);
            //Console.WriteLine("第二解密 result:" + resSteptwo);
            //Console.WriteLine(AESHelper.FromBase64(resSteptwo));
            if (resSteptwo.Length > 0)
            {
                return AESHelper.FromBase64(resSteptwo);
            }
            else
            {
                return "解密失败——请记录日志.Step-2";
            }  
        }
        else {
            return "解密失败——请记录日志.Step-1";
        }  
    }


    private string StepOne(string code)
    {
        // 1.先移除插入的字符
        // 2.再进行解密操作
        int maxlength = code.Length - idSort.Count - 1;
        int indexSub = 0;
        int insertPos = 0;

        for (int i = 1; i < idSort.Count; i++)
        {
            indexSub = idSort[i] + 1;
            insertPos = magic(indexSub + i) + i * 11;  
            //前面插入
            //Console.WriteLine("前面    索引:" + i);
            //Console.WriteLine("前面插入位置:" + insertPos);
            //Console.WriteLine("前面插入字符:" + insertStr + "");

            if (insertPos > code.Length) {
                //Console.WriteLine("修正Length:" + code.Length);
                Console.WriteLine("修正insertPos:" + insertPos);
                //Console.WriteLine("----code.Length:" + (code.Length

-maxlength ));
//Console.WriteLine(“----code.Length:” + (
idSort.Count-1 - i));
//Console.WriteLine(“----code.Length:” + ((code.Length -
maxlength - (idSort.Count - 1 - i))+1));
insertPos = maxlength -4;
insertPos = maxlength - ((code.Length - maxlength -
(idSort.Count - 1 - i)) + 1);
//Console.WriteLine(“*******code.Length:” +
((code.Length - maxlength - (idSort.Count - 1 - i)) + 1));
//Console.WriteLine(“*******code.Length:” + (code.Length

  • maxlength - (idSort.Count - i)) );
    //Console.WriteLine(“*******code.Length:” + (code.Length

  • maxlength - idSort.Count - i ));
    //Console.WriteLine(“code.Length:” + code.Length);
    //Console.WriteLine(“maxlength:” + maxlength);
    //Console.WriteLine(“idSort.Count:” + idSort.Count);
    //Console.WriteLine(“idSort.Count - i:” + (idSort.Count

  • i));
    //Console.WriteLine(“修正插入位置i:” + i);
    //Console.WriteLine(“修正插入位置:” + insertPos);
    insertPos = maxlength - ((code.Length - maxlength -
    (idSort.Count - 1 - i)) + 1);
    }
    code = code.Substring(0, insertPos) +
    code.Substring(insertPos + 1);
    }

          //Console.WriteLine("整理后的:" + code);
          //Console.WriteLine("整理后的Length:" + code.Length);
          string key = Md5Hash(this.gameID + this.chatSign, false);
          string iv = IvStepTwo.Substring(14, 16);
    
          //第一次解密是 16进制字符串
          string result = AESHelper.Decrypt(code, key, iv);
          return AESHelper.HexStringToString(AESHelper.Inverse(result),
    

Encoding.UTF8);
}

    private string Steptwo(string code) {

        string key = Md5Hash(this.chatSign + this.nickName, false);
        string iv = IvStepOne.Substring(4, 16);



        string base64 =

AESHelper.HexStringToString(AESHelper.Decrypt(code, key, iv),
Encoding.UTF8);

        string source = base64.Substring(0, idSort[idSort.Count - 1]) +

generateMid(base64.Substring(idSort[idSort.Count - 1], base64.Length -
idSort[3] - idSort[idSort.Count - 1] * 2)) + base64.Substring(base64.Length

  • idSort[3] - idSort[idSort.Count - 1]);

          //第二次解密是 base64
          return source ;
      }
    
    
      private string generateMid(string str) {
    

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数网络安全工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
![img](https://img-
blog.csdnimg.cn/img_convert/ab2d3e11602c2abd2f050f209af49bb2.png)
![img](https://img-
blog.csdnimg.cn/img_convert/28e7b2c9ac36c39a6effad270878f58b.png)
![img](https://img-
blog.csdnimg.cn/img_convert/1dc18c9ca6e66b95c773a44b0a6d5d1c.png)
![img](https://img-
blog.csdnimg.cn/img_convert/6b9600ff22c265bd1dfa735bc9290cc4.png)
![img](https://img-
blog.csdnimg.cn/img_convert/b8d26873c03de4ead50a93e15573598b.png)
![img](https://img-
blog.csdnimg.cn/img_convert/7eb6cea846250809bdcb97c4d3c948e3.png)

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上网络安全知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注网络安全获取)
![img](https://img-
blog.csdnimg.cn/img_convert/4aa02304560cc66897868536f8f88269.png)

给大家的福利

零基础入门

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

![](https://img-
blog.csdnimg.cn/img_convert/95608e9062782d28f4f04f821405d99a.png)

同时每个成长路线对应的板块都有配套的视频提供:

![在这里插入图片描述](https://img-
blog.csdnimg.cn/direct/a91b9e8100834e9291cfcf1695d8cd42.png#pic_center)

因篇幅有限,仅展示部分资料

网络安全面试题

![](https://img-
blog.csdnimg.cn/img_convert/80674985176a4889f7bb130756893764.png)

绿盟护网行动

![](https://img-
blog.csdnimg.cn/img_convert/9f3395407120bb0e1b5bf17bb6b6c743.png)

还有大家最喜欢的黑客技术

![](https://img-
blog.csdnimg.cn/img_convert/5912337446dee53639406fead3d3f03c.jpeg)

网络安全源码合集+工具包

![](https://img-
blog.csdnimg.cn/img_convert/5072ce807750c7ec721c2501c29cb7d5.png)

![](https://img-
blog.csdnimg.cn/img_convert/4a5f4281817dc4613353c120c9543810.png)

所有资料共282G ,朋友们如果有需要全套《网络安全入门+黑客进阶学习资源包》,可以扫描下方二维码领取(如遇扫码问题,可以在评论区留言领取哦)~

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
![img](https://img-
blog.csdnimg.cn/img_convert/9aeb8c47e56bc7de62fe8ae13d36fa26.png)

t/5072ce807750c7ec721c2501c29cb7d5.png)

![](https://img-
blog.csdnimg.cn/img_convert/4a5f4281817dc4613353c120c9543810.png)

所有资料共282G ,朋友们如果有需要全套《网络安全入门+黑客进阶学习资源包》,可以扫描下方二维码领取(如遇扫码问题,可以在评论区留言领取哦)~

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-BeKQqxsw-1712660549672)]

题外话

初入计算机行业的人或者大学计算机相关专业毕业生,很多因缺少实战经验,就业处处碰壁。下面我们来看两组数据:

2023届全国高校毕业生预计达到1158万人,就业形势严峻;

国家网络安全宣传周公布的数据显示,到2027年我国网络安全人员缺口将达327万。

一方面是每年应届毕业生就业形势严峻,一方面是网络安全人才百万缺口。

6月9日,麦可思研究2023年版就业蓝皮书(包括《2023年中国本科生就业报告》《2023年中国高职生就业报告》)正式发布。

2022届大学毕业生月收入较高的前10个专业

本科计算机类、高职自动化类专业月收入较高。2022届本科计算机类、高职自动化类专业月收入分别为6863元、5339元。其中,本科计算机类专业起薪与2021届基本持平,高职自动化类月收入增长明显,2022届反超铁道运输类专业(5295元)排在第一位。

具体看专业,2022届本科月收入较高的专业是信息安全(7579元)。对比2018届,电子科学与技术、自动化等与人工智能相关的本科专业表现不俗,较五年前起薪涨幅均达到了19%。数据科学与大数据技术虽是近年新增专业但表现亮眼,已跻身2022届本科毕业生毕业半年后月收入较高专业前三。五年前唯一进入本科高薪榜前10的人文社科类专业——法语已退出前10之列。

“没有网络安全就没有国家安全”。当前,网络安全已被提升到国家战略的高度,成为影响国家安全、社会稳定至关重要的因素之一。

网络安全行业特点

1、就业薪资非常高,涨薪快 2022年猎聘网发布网络安全行业就业薪资行业最高人均33.77万!

img

2、人才缺口大,就业机会多

2019年9月18日《中华人民共和国中央人民政府》官方网站发表:我国网络空间安全人才 需求140万人,而全国各大学校每年培养的人员不到1.5W人。猎聘网《2021年上半年网络安全报告》预测2027年网安人才需求300W,现在从事网络安全行业的从业人员只有10W人。
img

行业发展空间大,岗位非常多

网络安全行业产业以来,随即新增加了几十个网络安全行业岗位︰网络安全专家、网络安全分析师、安全咨询师、网络安全工程师、安全架构师、安全运维工程师、渗透工程师、信息安全管理员、数据安全工程师、网络安全运营工程师、网络安全应急响应工程师、数据鉴定师、网络安全产品经理、网络安全服务工程师、网络安全培训师、网络安全审计员、威胁情报分析工程师、灾难恢复专业人员、实战攻防专业人员…

职业增值潜力大

网络安全专业具有很强的技术特性,尤其是掌握工作中的核心网络架构、安全技术,在职业发展上具有不可替代的竞争优势。

随着个人能力的不断提升,所从事工作的职业价值也会随着自身经验的丰富以及项目运作的成熟,升值空间一路看涨,这也是为什么受大家欢迎的主要原因。

从某种程度来讲,在网络安全领域,跟医生职业一样,越老越吃香,因为技术愈加成熟,自然工作会受到重视,升职加薪则是水到渠成之事。

黑客&网络安全如何学习

今天只要你给我的文章点赞,我私藏的网安学习资料一样免费共享给你们,来看看有哪些东西。

1.学习路线图

行业发展空间大,岗位非常多

网络安全行业产业以来,随即新增加了几十个网络安全行业岗位︰网络安全专家、网络安全分析师、安全咨询师、网络安全工程师、安全架构师、安全运维工程师、渗透工程师、信息安全管理员、数据安全工程师、网络安全运营工程师、网络安全应急响应工程师、数据鉴定师、网络安全产品经理、网络安全服务工程师、网络安全培训师、网络安全审计员、威胁情报分析工程师、灾难恢复专业人员、实战攻防专业人员…

职业增值潜力大

网络安全专业具有很强的技术特性,尤其是掌握工作中的核心网络架构、安全技术,在职业发展上具有不可替代的竞争优势。

随着个人能力的不断提升,所从事工作的职业价值也会随着自身经验的丰富以及项目运作的成熟,升值空间一路看涨,这也是为什么受大家欢迎的主要原因。

从某种程度来讲,在网络安全领域,跟医生职业一样,越老越吃香,因为技术愈加成熟,自然工作会受到重视,升职加薪则是水到渠成之事。

黑客&网络安全如何学习

今天只要你给我的文章点赞,我私藏的网安学习资料一样免费共享给你们,来看看有哪些东西。

1.学习路线图

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

攻击和防守要学的东西也不少,具体要学的东西我都写在了上面的路线图,如果你能学完它们,你去就业和接私活完全没有问题。

2.视频教程

网上虽然也有很多的学习资源,但基本上都残缺不全的,这是我自己录的网安视频教程,上面路线图的每一个知识点,我都有配套的视频讲解。

内容涵盖了网络安全法学习、网络安全运营等保测评、渗透测试基础、漏洞详解、计算机基础知识等,都是网络安全入门必知必会的学习内容。

3.技术文档和电子书

技术文档也是我自己整理的,包括我参加大型网安行动、CTF和挖SRC漏洞的经验和技术要点,电子书也有200多本,由于内容的敏感性,我就不一一展示了。

4.工具包、面试题和源码

“工欲善其事必先利其器”我为大家总结出了最受欢迎的几十款款黑客工具。涉及范围主要集中在 信息收集、Android黑客工具、自动化工具、网络钓鱼等,感兴趣的同学不容错过。

还有我视频里讲的案例源码和对应的工具包,需要的话也可以拿走。

这些题目都是大家在面试深信服、奇安信、腾讯或者其它大厂面试时经常遇到的,如果大家有好的题目或者好的见解欢迎分享。

参考解析:深信服官网、奇安信官网、Freebuf、csdn等

内容特点:条理清晰,含图像化表示更加易懂。

内容概要:包括 内网、操作系统、协议、渗透测试、安服、漏洞、注入、XSS、CSRF、SSRF、文件上传、文件下载、文件包含、XXE、逻辑漏洞、工具、SQLmap、NMAP、BP、MSF…

img

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

如果你对网络安全入门感兴趣,那么你需要的话可以点击这里👉网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值