Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >技术分享 | 使用 pt-query-digest 分析慢日志

技术分享 | 使用 pt-query-digest 分析慢日志

作者头像
爱可生开源社区
发布于 2020-09-28 02:43:17
发布于 2020-09-28 02:43:17
3.7K04
代码可运行
举报
运行总次数:4
代码可运行

作者:张伟

爱可生北京分公司 DBA 团队成员,负责 MySQL 日常问题处理和 DMP 产品维护。喜爱技术和开源数据库,喜爱运动、读书、电影,花草树木。

本文来源:原创投稿

*爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。


pt-query-digest 简介

子曰:“工欲善其事,必先利其器”

善于利用好的性能分析工具可以使运维效率事半功倍。pt-query-digest 属于 Percona Toolkit 工具集中较为常用的工具,用于分析 slow log,可以分析 MySQL 数据库的 binary log 、 general log 日志,同时也可以使用 show processlist 或从 tcpdump 抓取的 MySQL 协议数据来进行分析。

部署 Percona Toolkit

下载最新版本的 Percona Toolkit

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@xxx ~]# wget https://www.percona.com/downloads/percona-toolkit/3.2.1/binary/redhat/7/x86_64/percona-toolkit-3.2.1-1.el7.x86_64.rpm
--2020-09-02 06:44:43--  https://www.percona.com/downloads/percona-toolkit/3.2.1/binary/redhat/7/x86_64/percona-toolkit-3.2.1-1.el7.x86_64.rpm
Resolving www.percona.com (www.percona.com)... 74.121.199.234
Connecting to www.percona.com (www.percona.com)|74.121.199.234|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 17397876 (17M) [application/x-redhat-package-manager]
Saving to: ‘percona-toolkit-3.2.1-1.el7.x86_64.rpm’

100%[=====================================================================================================================================================>] 17,397,876  68.3KB/s   in 2m 37s

2020-09-02 06:47:27 (108 KB/s) - ‘percona-toolkit-3.2.1-1.el7.x86_64.rpm’ saved [17397876/17397876]

[root@xxx ~]# ls | grep percona-toolkit-3.2.1-1.el7.x86_64.rpm
percona-toolkit-3.2.1-1.el7.x86_64.rpm

PT 工具是使用 Perl 语言编写和执行的,所以需要系统中有 Perl 环境。安装相关的依赖包,

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@xxx ~]# yum install perl-DBI.x86_64
[root@xxx ~]# yum install perl-DBD-MySQL.x86_64
[root@xxx ~]# yum install perl-IO-Socket-SSL.noarch
[root@xxx ~]# yum install perl-Digest-MD5.x86_64
[root@xxx ~]# yum install perl-TermReadKey.x86_64

安装 Percona Toolkit

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@xxx ~]# rpm -iv percona-toolkit-3.2.1-1.el7.x86_64.rpm
warning: percona-toolkit-3.2.1-1.el7.x86_64.rpm: Header V4 RSA/SHA256 Signature, key ID 8507efa5: NOKEY
Preparing packages...
percona-toolkit-3.2.1-1.el7.x86_64

[root@xxx ~]# rpm -qa | grep percona
percona-toolkit-3.2.1-1.el7.x86_64

工具目录安装路径:/usr/bin

检查慢日志的相关配置

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysql> show variables like '%slow%';
+---------------------------+-------------------------------------+
| Variable_name             | Value                               |
+---------------------------+-------------------------------------+
| log_slow_admin_statements | ON                                  |
| log_slow_slave_statements | ON                                  |
| slow_launch_time          | 2                                   |
| slow_query_log            | ON                                  |
| slow_query_log_file       | /opt/mysql/data/7777/mysql-slow.log |
+---------------------------+-------------------------------------+
5 rows in set (0.01 sec)

mysql> show variables like 'long_query_time';
+-----------------+----------+
| Variable_name   | Value    |
+-----------------+----------+
| long_query_time | 1.000000 |
+-----------------+----------+
1 row in set (0.01 sec)

由于更好测试慢日志文件的输出,此处将慢日志执行时间阈值调小。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysql>  set global long_query_time=0.001000;
Query OK, 0 rows affected (0.00 sec)

mysql> show variables like 'long_query_time';
+-----------------+----------+
| Variable_name   | Value    |
+-----------------+----------+
| long_query_time | 0.001000 |
+-----------------+----------+
1 row in set (0.00 sec)

pt-query-digest 分析慢日志

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@xxx 7777]# pt-query-digest   mysql-slow.log

# 3.6s user time, 100ms system time, 32.64M rss, 227.52M vsz
# Current date: Wed Sep  2 11:22:34 2020
# Hostname: xxx
# Files: mysql-slow.log
# Overall: 37.46k total, 17 unique, 576.26 QPS, 5.58x concurrency ________
# Time range: 2020-09-02T11:21:24 to 2020-09-02T11:22:29
# Attribute          total     min     max     avg     95%  stddev  median
# ============     ======= ======= ======= ======= ======= ======= =======
# Exec time           363s     1ms   183ms    10ms    23ms     8ms     8ms
# Lock time             1s       0    34ms    35us    38us   603us       0
# Rows sent        182.14k       0     100    4.98    0.99   21.06       0
# Rows examine     491.83k       0   1.02k   13.45   97.36   56.85       0
# Query size        19.82M       5 511.96k  554.80   72.65  16.25k    5.75

# Profile
# Rank Query ID                      Response time  Calls R/Call V/M   Ite
# ==== ============================= ============== ===== ====== ===== ===
#    1 0xFFFCA4D67EA0A788813031B8... 328.2315 90.4% 30520 0.0108  0.01 COMMIT
#    2 0xB2249CB854EE3C2AD30AD7E3...   8.0186  2.2%  1208 0.0066  0.01 UPDATE sbtest?
#    3 0xE81D0B3DB4FB31BC558CAEF5...   6.6346  1.8%  1639 0.0040  0.01 SELECT sbtest?
#    4 0xDDBF88031795EC65EAB8A8A8...   5.5093  1.5%   756 0.0073  0.02 DELETE sbtest?
# MISC 0xMISC                         14.6011  4.0%  3334 0.0044   0.0 <13 ITEMS>

# Query 1: 1.02k QPS, 10.94x concurrency, ID 0xFFFCA4D67EA0A788813031B8BBC3B329 at byte 26111916
# This item is included in the report because it matches --limit.
# Scores: V/M = 0.01
# Time range: 2020-09-02T11:21:59 to 2020-09-02T11:22:29
# Attribute    pct   total     min     max     avg     95%  stddev  median
# ============ === ======= ======= ======= ======= ======= ======= =======
# Count         81   30520
# Exec time     90    328s     1ms   129ms    11ms    23ms     8ms     9ms
# Lock time      0       0       0       0       0       0       0       0
# Rows sent      0       0       0       0       0       0       0       0
# Rows examine   0       0       0       0       0       0       0       0
# Query size     0 178.83k       6       6       6       6       0       6
# String:
# Databases    test
# Hosts        10.186.60.147
# Users        root
# Query_time distribution
#   1us
#  10us
# 100us
#   1ms  ################################################################
#  10ms  ###########################################################
# 100ms  #
#    1s
#  10s+
COMMIT\G

# Query 2: 41.66 QPS, 0.28x concurrency, ID 0xB2249CB854EE3C2AD30AD7E3079ABCE7 at byte 24161590
# This item is included in the report because it matches --limit.
# Scores: V/M = 0.01
# Time range: 2020-09-02T11:21:59 to 2020-09-02T11:22:28
# Attribute    pct   total     min     max     avg     95%  stddev  median
# ============ === ======= ======= ======= ======= ======= ======= =======
# Count          3    1208
# Exec time      2      8s     1ms   115ms     7ms    24ms     9ms     3ms
# Lock time     38   518ms    17us    34ms   428us    73us     2ms    36us
# Rows sent      0       0       0       0       0       0       0       0
# Rows examine   0   1.18k       1       1       1       1       0       1
# Query size     0  46.01k      39      39      39      39       0      39
# String:
# Databases    test
# Hosts        10.186.60.147
# Users        root
# Query_time distribution
#   1us
#  10us
# 100us
#   1ms  ################################################################
#  10ms  ##############
# 100ms  #
#    1s
#  10s+
# Tables
#    SHOW TABLE STATUS FROM `test` LIKE 'sbtest1'\G
#    SHOW CREATE TABLE `test`.`sbtest1`\G
UPDATE sbtest1 SET k=k+1 WHERE id=50313\G
# Converted for EXPLAIN
# EXPLAIN /*!50100 PARTITIONS*/
select  k=k+1 from sbtest1 where  id=50313\G

# Query 3: 56.52 QPS, 0.23x concurrency, ID 0xE81D0B3DB4FB31BC558CAEF5F387E929 at byte 22020829
# This item is included in the report because it matches --limit.
# Scores: V/M = 0.01
# Time range: 2020-09-02T11:21:59 to 2020-09-02T11:22:28
# Attribute    pct   total     min     max     avg     95%  stddev  median
# ============ === ======= ======= ======= ======= ======= ======= =======
# Count          4    1639
# Exec time      1      7s     1ms    61ms     4ms    14ms     5ms     2ms
# Lock time      3    45ms    11us   958us    27us    44us    30us    23us
# Rows sent      0   1.60k       1       1       1       1       0       1
# Rows examine   0   1.60k       1       1       1       1       0       1
# Query size     0  57.62k      36      36      36      36       0      36
# String:
# Databases    test
# Hosts        10.186.60.147
# Users        root
# Query_time distribution
#   1us
#  10us
# 100us
#   1ms  ################################################################
#  10ms  ######
# 100ms
#    1s
#  10s+
# Tables
#    SHOW TABLE STATUS FROM `test` LIKE 'sbtest1'\G
#    SHOW CREATE TABLE `test`.`sbtest1`\G
# EXPLAIN /*!50100 PARTITIONS*/
SELECT c FROM sbtest1 WHERE id=61690\G

# Query 4: 26.07 QPS, 0.19x concurrency, ID 0xDDBF88031795EC65EAB8A8A8BEEFF705 at byte 21045172
# This item is included in the report because it matches --limit.
# Scores: V/M = 0.02
# Time range: 2020-09-02T11:21:59 to 2020-09-02T11:22:28
# Attribute    pct   total     min     max     avg     95%  stddev  median
# ============ === ======= ======= ======= ======= ======= ======= =======
# Count          2     756
# Exec time      1      6s     1ms   104ms     7ms    26ms    10ms     3ms
# Lock time     18   252ms    13us    19ms   333us    54us     2ms    26us
# Rows sent      0       0       0       0       0       0       0       0
# Rows examine   0     756       1       1       1       1       0       1
# Query size     0  25.10k      34      34      34      34       0      34
# String:
# Databases    test
# Hosts        10.186.60.147
# Users        root
# Query_time distribution
#   1us
#  10us
# 100us
#   1ms  ################################################################
#  10ms  #################
# 100ms  #
#    1s
#  10s+
# Tables
#    SHOW TABLE STATUS FROM `test` LIKE 'sbtest1'\G
#    SHOW CREATE TABLE `test`.`sbtest1`\G
DELETE FROM sbtest1 WHERE id=50296\G
# Converted for EXPLAIN
# EXPLAIN /*!50100 PARTITIONS*/
select * from  sbtest1 WHERE id=50296\G

分析 pt-query-digest 输出结果

第一部分:输出结果的总体信息

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 3.6s user time, 100ms system time, 32.64M rss, 227.52M vsz 
说明:
执行过程中在用户中所花费的所有时间
执行过程中内核空间中所花费的所有时间
pt-query-digest进程所分配的内存大小
pt-query-digest进程所分配的虚拟内存大小

# Current date: Wed Sep  2 11:22:34 2020 
说明:当前日期

# Hostname: xxx
说明:执行pt-query-digest的主机名

# Files: mysql-slow.log
说明:被分析的文件名

# Overall: 37.46k total, 17 unique, 576.26 QPS, 5.58x concurrency ________
说明:语句总数量,唯一语句数量,每秒查询量,查询的并发

# Time range: 2020-09-02T11:21:24 to 2020-09-02T11:22:29
说明:执行过程中日志记录的时间范围

# Attribute          total     min     max     avg     95%  stddev  median
说明:属性           总计     最小值  最大值  平均值   95%  标准差  中位数
# ============     ======= ======= ======= ======= ======= ======= =======

# Exec time           363s     1ms   183ms    10ms    23ms     8ms     8ms
说明:执行时间
# Lock time             1s       0    34ms    35us    38us   603us       0
说明:锁占用时间
# Rows sent        182.14k       0     100    4.98    0.99   21.06       0
说明:发送到客户端的行数
# Rows examine     491.83k       0   1.02k   13.45   97.36   56.85       0
说明:扫描的语句行数
# Query size        19.82M       5 511.96k  554.80   72.65  16.25k    5.75 
说明:查询的字符数

第二部分:输出队列组的统计信息

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# Profile
说明:简况
# Rank Query ID                      Response time  Calls R/Call V/M   Ite
# ==== ============================= ============== ===== ====== ===== ===
#    1 0xFFFCA4D67EA0A788813031B8... 328.2315 90.4% 30520 0.0108  0.01 COMMIT
#    2 0xB2249CB854EE3C2AD30AD7E3...   8.0186  2.2%  1208 0.0066  0.01 UPDATE sbtest?
#    3 0xE81D0B3DB4FB31BC558CAEF5...   6.6346  1.8%  1639 0.0040  0.01 SELECT sbtest?
#    4 0xDDBF88031795EC65EAB8A8A8...   5.5093  1.5%   756 0.0073  0.02 DELETE sbtest?
# MISC 0xMISC                         14.6011  4.0%  3334 0.0044   0.0 <13 ITEMS>

第三部分:输出每列查询的详细信息

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# Query 1: 1.02k QPS, 10.94x concurrency, ID 0xFFFCA4D67EA0A788813031B8BBC3B329 at byte 26111916
说明:查询队列1:每秒查询量,查询的并发,队列1ID值,26111916:表示文中偏移量(查看方法在下面‘偏1’中)

# This item is included in the report because it matches --limit.
# Scores: V/M = 0.01
# Time range: 2020-09-02T11:21:59 to 2020-09-02T11:22:29
# Attribute    pct   total     min     max     avg     95%  stddev  median
# ============ === ======= ======= ======= ======= ======= ======= =======
# Count         81   30520
# Exec time     90    328s     1ms   129ms    11ms    23ms     8ms     9ms
# Lock time      0       0       0       0       0       0       0       0
# Rows sent      0       0       0       0       0       0       0       0
# Rows examine   0       0       0       0       0       0       0       0
# Query size     0 178.83k       6       6       6       6       0       6
说明:查询的详细说明,在第一部分/第二部分有相关参数说明
# String:
# Databases    test
说明:使用的数据库名称
# Hosts        10.186.60.147
说明:使用的主机IP
# Users        root
说明:使用的用户名
# Query_time distribution
#   1us
#  10us
# 100us
#   1ms  ################################################################
#  10ms  ###########################################################
# 100ms  #
#    1s
#  10s+
说明:查询时间分布
COMMIT\G
说明:执行的慢语句信息
# Query 2: 41.66 QPS, 0.28x concurrency, ID 0xB2249CB854EE3C2AD30AD7E3079ABCE7 at byte 24161590
# This item is included in the report because it matches --limit.
# Scores: V/M = 0.01
# Time range: 2020-09-02T11:21:59 to 2020-09-02T11:22:28
# Attribute    pct   total     min     max     avg     95%  stddev  median
# ============ === ======= ======= ======= ======= ======= ======= =======
# Count          3    1208
# Exec time      2      8s     1ms   115ms     7ms    24ms     9ms     3ms
# Lock time     38   518ms    17us    34ms   428us    73us     2ms    36us
# Rows sent      0       0       0       0       0       0       0       0
# Rows examine   0   1.18k       1       1       1       1       0       1
# Query size     0  46.01k      39      39      39      39       0      39
# String:
# Databases    test
# Hosts        10.186.60.147
# Users        root
# Query_time distribution
#   1us
#  10us
# 100us
#   1ms  ################################################################
#  10ms  ##############
# 100ms  #
#    1s
#  10s+
# Tables
#    SHOW TABLE STATUS FROM `test` LIKE 'sbtest1'\G
#    SHOW CREATE TABLE `test`.`sbtest1`\G
UPDATE sbtest1 SET k=k+1 WHERE id=50313\G
# Converted for EXPLAIN
# EXPLAIN /*!50100 PARTITIONS*/
select  k=k+1 from sbtest1 where  id=50313\G

# Query 3: 56.52 QPS, 0.23x concurrency, ID 0xE81D0B3DB4FB31BC558CAEF5F387E929 at byte 22020829
# This item is included in the report because it matches --limit.
# Scores: V/M = 0.01
# Time range: 2020-09-02T11:21:59 to 2020-09-02T11:22:28
# Attribute    pct   total     min     max     avg     95%  stddev  median
# ============ === ======= ======= ======= ======= ======= ======= =======
# Count          4    1639
# Exec time      1      7s     1ms    61ms     4ms    14ms     5ms     2ms
# Lock time      3    45ms    11us   958us    27us    44us    30us    23us
# Rows sent      0   1.60k       1       1       1       1       0       1
# Rows examine   0   1.60k       1       1       1       1       0       1
# Query size     0  57.62k      36      36      36      36       0      36
# String:
# Databases    test
# Hosts        10.186.60.147
# Users        root
# Query_time distribution
#   1us
#  10us
# 100us
#   1ms  ################################################################
#  10ms  ######
# 100ms
#    1s
#  10s+
# Tables
#    SHOW TABLE STATUS FROM `test` LIKE 'sbtest1'\G
#    SHOW CREATE TABLE `test`.`sbtest1`\G
# EXPLAIN /*!50100 PARTITIONS*/
SELECT c FROM sbtest1 WHERE id=61690\G

# Query 4: 26.07 QPS, 0.19x concurrency, ID 0xDDBF88031795EC65EAB8A8A8BEEFF705 at byte 21045172
# This item is included in the report because it matches --limit.
# Scores: V/M = 0.02
# Time range: 2020-09-02T11:21:59 to 2020-09-02T11:22:28
# Attribute    pct   total     min     max     avg     95%  stddev  median
# ============ === ======= ======= ======= ======= ======= ======= =======
# Count          2     756
# Exec time      1      6s     1ms   104ms     7ms    26ms    10ms     3ms
# Lock time     18   252ms    13us    19ms   333us    54us     2ms    26us
# Rows sent      0       0       0       0       0       0       0       0
# Rows examine   0     756       1       1       1       1       0       1
# Query size     0  25.10k      34      34      34      34       0      34
# String:
# Databases    test
# Hosts        10.186.60.147
# Users        root
# Query_time distribution
#   1us
#  10us
# 100us
#   1ms  ################################################################
#  10ms  #################
# 100ms  #
#    1s
#  10s+
# Tables
#    SHOW TABLE STATUS FROM `test` LIKE 'sbtest1'\G
#    SHOW CREATE TABLE `test`.`sbtest1`\G
DELETE FROM sbtest1 WHERE id=50296\G
# Converted for EXPLAIN
# EXPLAIN /*!50100 PARTITIONS*/
select * from  sbtest1 WHERE id=50296\G

偏 1:

可以利用偏移量在慢查询日志文件中到查找到具体的 SQL 语句,查找方法如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@xxx 7777]# tail -c +26111916 ./mysql-slow.log | head
# Time: 2020-09-02T11:22:21.062995-00:00
# User@Host: root[root] @  [10.186.60.147]  Id:  1177
# Query_time: 0.128524  Lock_time: 0.000000 Rows_sent: 0  Rows_examined: 0
SET timestamp=1599045741;
COMMIT;
# Time: 2020-09-02T11:22:21.063202-00:00
# User@Host: root[root] @  [10.186.60.147]  Id:  1179
# Query_time: 0.126925  Lock_time: 0.000000 Rows_sent: 0  Rows_examined: 0
SET timestamp=1599045741;
COMMIT;

在生产环境中,可根据输出的慢 SQL 详情进行合理的语句调整。

参考文档

  • https://www.percona.com/doc/percona-toolkit/LATEST/pt-query-digest.html
  • https://dev.mysql.com/doc/refman/5.7/en/slow-query-log.html

小女不才,如有不足欢迎指正,告辞。


技术分享 | MySQL 监控利器之 Pt-Stalk

技术分享 | Xtrabackup 备份中 Xtrabackup_binlog_info 文件记录的 GTID 信息是否准确?

技术分享 | Percona Toolkit 使用场景分享


本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-09-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 爱可生开源社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
3des算法源码
using System; using System.Text; using System.IO; using System.Security.Cryptography; class Class1 { static void Main() {   Console.WriteLine("Encrypt String...");   txtKey = "tkGGRmBErvc=";   btnKeyGen();   Console.WriteLine("Encrypt Key :{0}",txtKey);   txtIV = "Kl7ZgtM1dvQ=";   btnIVGen();   Console.WriteLine("Encrypt IV :{0}",txtIV);   Console.WriteLine();   string txtEncrypted = EncryptString("1111");   Console.WriteLine("Encrypt String : {0}",txtEncrypted);   string txtOriginal = DecryptString(txtEncrypted);   Console.WriteLine("Decrypt String : {0}",txtOriginal); } private static SymmetricAlgorithm mCSP; private static string txtKey; private static string txtIV; private static void btnKeyGen() {   mCSP = SetEnc();   byte[] byt2 = Convert.FromBase64String(txtKey);   mCSP.Key = byt2; } private static void btnIVGen() {   byte[] byt2 = Convert.FromBase64String(txtIV);   mCSP.IV = byt2; } private static string EncryptString(string Value) {   ICryptoTransform ct;   MemoryStream ms;   CryptoStream cs;   byte[] byt;   ct = mCSP.CreateEncryptor(mCSP.Key, mCSP.IV);   byt = Encoding.UTF8.GetBytes(Value);   ms = new MemoryStream();   cs = new CryptoStream(ms, ct, CryptoStreamMode.Write);   cs.Write(byt, 0, byt.Length);   cs.FlushFinalBlock();   cs.Close();   return Convert.ToBase64String(ms.ToArray()); } private static string DecryptString(string Value) {   ICryptoTransform ct;   MemoryStream ms;   CryptoStream cs;   byte[] byt;   ct = mCSP.CreateDecryptor(mCSP.Key, mCSP.IV);   byt = Convert.FromBase64String(Value);   ms = new MemoryStream();   cs = new CryptoStream(ms, ct, CryptoStreamMode.Write);   cs.Write(byt, 0, byt.Length);   cs.FlushFinalBlock();   cs.Close();   return Encoding.UTF8.GetString(ms.ToArray()); } private static SymmetricAlgorithm SetEnc() {   return new DESCryptoServiceProvider(); } } 3DES(即Triple DES)是DES向AES过渡的加密算法(1999年,NIST将3-DES指定为过渡的加密标准),是DES的一个更安全的变形。它以DES为基本模块,通过组合分组方法设计出分组加密算法,其具体实现如下:设Ek()和Dk()代表DES算法的加密和解密过程,K代表DES算法使用的密钥,P代表明文,C代表密表,这样, 3
py3study
2020/01/10
7150
dotnet MD5
MD5 加密解密算法 using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Security.Cryptography; using System.Text; using System.Threading.Tasks; namespace Watch { class DES { // 创建Key public strin
sofu456
2020/05/04
8460
[C#] 常用工具类——加密解密类
using System; using System.Configuration; using System.Collections.Generic; using System.Text; using System.Web; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.
跟着阿笨一起玩NET
2018/09/19
1.6K0
Md5加密秘钥加密哈希加密
加密通用类: public class EncryptClass { /// <summary> /// 返回MD5加密字符串 /// </summary> /// <param name="EncString"></param> /// <returns></returns> public static string GetMd5String(string EncString)
用户1055830
2018/01/18
6.2K1
c#通用登录模块,简单好用,一贴见效
// 举个例子:一个网站有用户系统、商家系统、网站后台3个系统 //可以分3个userType, user ,shop , system //网站后台一般都有角色,如admin,employee //那么网站的角色就有 user,shop,admin,employee,但是admin和employee在一个客户端是不能同时登陆的,所以他们是同一类用户(system) 使用方法: 1、添加一个类LoginUser.cs 代码如下: 代码: namespace MVCCommonAut
阿炬
2018/05/11
1.1K2
DotNet中几种常用的加密算法
彭泽0902
2018/01/04
7770
Asp.Net 加密解密
#region DES加密解密 /// <summary> /// DES加密 /// </summary> /// <param name="strSource">待加密字串</param> /// <param name="key">32位Key值</param> /// <returns>加密后的字符串</returns> public string DESEncrypt(string strSource) { return DESEncrypt(strSource, DESKey); } public string DESEncrypt(string strSource, byte[] key) { SymmetricAlgorithm sa = Rijndael.Create(); sa.Key = key; sa.Mode = CipherMode.ECB; sa.Padding = PaddingMode.Zeros; MemoryStream ms = new MemoryStream(); CryptoStream cs = new CryptoStream(ms, sa.CreateEncryptor(), CryptoStreamMode.Write); byte[] byt = Encoding.Unicode.GetBytes(strSource); cs.Write(byt, 0, byt.Length); cs.FlushFinalBlock(); cs.Close(); return Convert.ToBase64String(ms.ToArray()); } /// <summary> /// DES解密 /// </summary> /// <param name="strSource">待解密的字串</param> /// <param name="key">32位Key值</param> /// <returns>解密后的字符串</returns> public string DESDecrypt(string strSource) { return DESDecrypt(strSource, DESKey); } public string DESDecrypt(string strSource, byte[] key) { SymmetricAlgorithm sa = Rijndael.Create(); sa.Key = key; sa.Mode = CipherMode.ECB; sa.Padding = PaddingMode.Zeros; ICryptoTransform ct = sa.CreateDecryptor(); byte[] byt = Convert.FromBase64String(strSource); MemoryStream ms = new MemoryStream(byt); CryptoStream cs = new CryptoStream(ms, ct, CryptoStreamMode.Read); StreamReader sr = new StreamReader(cs, Encoding.Unicode); return sr.ReadToEnd(); }
用户8671053
2021/11/02
2.2K0
C#封装的DES加密、解密类代码
这个C#类封装的DES加密解密,可以使用默认秘钥进行加密、解密,也可以自定义秘钥进行加密、解密,调用简单方便。
用户7108768
2021/11/03
1.4K0
C#笔记:RC6算法实现
public class RC6Cryptor     {         public byte[] Encrypt(byte[] data, string pwd)         {             SymmetricAlgorithm sa = Rc6.Create();             //             byte[] inputByteArray = data;//得到需要加密的字节数组             //设置密钥及密钥向量             sa.Ke
超级大猪
2019/11/22
1.3K0
3DES 加密与解密
/// <summary>     /// C#/PHP/JSP 3DES 加密与解密(只支持UTF-8编码)     /// </summary>     public class Crypto3DES     {         /// <summary>         /// 默认密钥         /// </summary>         private string Keys;         /// <summary>         /// 密钥与加密字符串
用户1220053
2018/02/09
2.2K0
【Unity3D】存档文件加密代码
存档文件, 被修改起来现在变的很容易了, 为了解决这个问题,请用下面的代码,修改playerPrefs.cs
py3study
2020/01/08
5590
快速入门系列--WebAPI--04在老版本MVC4下的调整
WebAPI是建立在MVC和WCF的基础上的,原来微软老是喜欢封装的很多,这次终于愿意将http编程模型的相关细节暴露给我们了。在之前的介绍中,基本上都基于.NET 4.5之后版本,其System.Net.Http程序集非常的丰富,而老版本的则相对较弱。在WebAPI v1.0(和ASP.NET MVC4在一起的版本)很多的类和接口并不存在,同时对Task异步编程(ApiController默认提供异步执行方法)的支持还有一些欠缺(缺少不少方便的扩展方法),在使用时会有一些需要注意的地方,由于一些老的项目用
用户1216676
2018/01/24
1.1K0
那些常用的加密算法
MD5加密是最常见的加密方式,因为MD5是不可逆的,所以很多系统的密码都是用MD5加密保存的。
Kiba518
2020/11/26
1.2K0
那些常用的加密算法
ASP.NET MVC5+EF6+EasyUI 后台管理系统(62)-EF链接串加密
前言:   这一节提供一个简单的功能,这个功能看似简单,找了一下没找到EF链接数据库串的加密帮助文档,只能自己写了,这样也更加符合自己的加密要求 有时候我们发布程序为了避免程序外的SQL链接串明文暴露,需要进行一些加密手段! 加密主要分几类:对称加密,非对称加密,散列算法(自己百度脑补,这里不再多说) 我这里选择AES 256位的加密,主要加密速度算法快,安全性高,资源消耗低。 公司一直在使用AES加密来加密一些小数据量的数据,比较方法和安全   这是我选择加密AES的理由,当然你可以选择其他有名的加密
用户1149182
2018/01/16
1K0
ASP.NET MVC5+EF6+EasyUI 后台管理系统(62)-EF链接串加密
C#笔记:RC4算法实现
public class RC4Cryptor     {                 public byte[] Encrypt(byte[] data, string pwd)         {             SymmetricAlgorithm sa = RC4Creator.Create(); ;             //             byte[] inputByteArray = data;//得到需要加密的字节数组             //设置密钥及密钥
超级大猪
2019/11/21
1.6K0
开始开源项目OpenTools的创作
前言:开始开源项目的创作。目的是开发一系列方便大家拿来即可使用的工具集合,希望能够让.net的生态更加丰富。该项目采用MIT开源。并且如果引用nuget包,该项目可以兼容.net framework4.6.1以及以上的所有.nrt framework以及所有.net core或以上环境的所有.net版本。
Wesky
2024/08/13
1450
开始开源项目OpenTools的创作
C#对字符串进行加密解密
明志德道
2023/10/21
4290
C#对字符串进行加密解密
.net core建站踩坑记录
services.AddOptions(); services.Configure<AppSettings>(Configuration.GetSection("AppSettings"));
易墨
2018/09/14
9490
.net core建站踩坑记录
文本的DES加密 MD5散列值 DSA的数字签名
作者:未知文本的DES加密为了对称加密的安全,将密码进行封装,先新建一个用于保存密码的类库cl:usC#
Java架构师必看
2020/10/26
7930
【愚公系列】2023年03月 MES生产制造执行系统-001.Autofac的使用
IoC容器是一种设计模式,它可以管理应用程序中的对象依赖关系。它可以自动创建和注入对象,从而减少了代码的耦合度和重复性。
愚公搬代码
2023/03/16
5030
【愚公系列】2023年03月 MES生产制造执行系统-001.Autofac的使用
相关推荐
3des算法源码
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验