no-style-please2 0.9.2 → 0.9.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 18874d617afbc3b090611e8c116f74ced4dc84f5620137ba864b662aac85b995
4
- data.tar.gz: fa7008e985c74baa0468222af02105a9691ddc7a18f76b0ca9c24ab22ddd2f0c
3
+ metadata.gz: f1153b0ca84cca1f649bbc632a249df3c01b028d2bc9c4afe21bac1ef2ca4662
4
+ data.tar.gz: aa9b649d2f6b76789fc9872c75a76ba580dfc41b08518e66b7deb934ebde7ecd
5
5
  SHA512:
6
- metadata.gz: 50a71db2e8b501fcb6b37df96ef594387ebc28bd1a1c274f650fb725529cf60c0c3352a4607eb44d9a4428e1bde24f0ac4b395efdca2b6b492b50183426eb5a5
7
- data.tar.gz: 96acf13b7abd37fb66357282ff28834f095f9563136a9e06b8f0fa197c6e2e31aa75daf047bdf4e24a6431c0984ce90247d654bbbbc8216e063ea57a4e22fe50
6
+ metadata.gz: 6d27d229ca31b46aff72e88311ab2c751f6d02c4fbe8437b6b9765a3e2bd938d2914e621cc94ff694f1f737a6aca10dc285d896d01e0b003f5316f10dbbb58f1
7
+ data.tar.gz: 6beac21e1b80e63c40399da8d12f2663e20f44993b7e8b487c639f4d2f0e3065080b0009c94917e4f161fb81e902c35db903b6b7e7bc95c241cb0b88bf8f5aa9
@@ -35,11 +35,17 @@
35
35
 
36
36
 
37
37
  <script>
38
-
39
38
 
40
- {% assign HEXKEY = '' | rand_bytes:32 %}
41
- const keyData = "{{ '' | encrypt_key:page,HEXKEY ,encid}}"
42
- const contentEnc = '{{ content | encrypt_content_v2:HEXKEY }}'
39
+ function uint8ArrayToHex(uint8Array) {
40
+ return Array.from(uint8Array)
41
+ .map(byte => byte.toString(16).padStart(2, '0')) // 转换每个字节为2位16进制
42
+ .join(''); // 连接成字符串
43
+ }
44
+
45
+
46
+
47
+ {%- assign HEXKEY = '' | rand_bytes:32 %}
48
+ const contentEnc = '{{ content | encrypt_content_v2:HEXKEY }}';
43
49
 
44
50
  !function(){
45
51
 
@@ -62,54 +68,90 @@
62
68
  return await substl.deriveBits(pbkdf2,key,256);
63
69
  }
64
70
 
65
- async function decryptRaw(msg64,key){
66
- const base64str = msg64.substring(3)
67
- const bfMsg = base64js.decode(base64str)
68
- const bfIv = bfMsg.subarray(0,16)
69
- const bfCipher = bfMsg.subarray(16)
71
+ async function decryptRaw(bf,key,outV){
72
+ if(bf.length < 8){
73
+ throw 'err'
74
+ }
75
+ let count = 0;
76
+ for (let i = 0; i < 4; i ++) {
77
+ count |= ((bf[i] ^ bf[i + 4] ^ i) << ((3 - i) * 8))
78
+ }
70
79
 
80
+ if(outV){
81
+ outV.count = count
82
+ }
83
+ if (bf.length < count) {
84
+ return
85
+ }
86
+
87
+ let bfIv = bf.slice(4,20)
88
+ let bfCipher = bf.slice(20,count )
89
+
71
90
  var aeskey = {
72
- name:"AES-CBC",
91
+ name:"AES-CTR",
73
92
  }
74
93
  var keyObj = await substl.importKey('raw',key,aeskey,false,['decrypt'])
75
- var aesDec= {name: "AES-CBC",iv:bfIv}
76
- var bfDec
94
+ var aesDec= {name: "AES-CTR",counter:bfIv,length:64};
77
95
  try{
78
- bfDec = await substl.decrypt(aesDec,keyObj,bfCipher)
96
+ let bfDec = await substl.decrypt(aesDec,keyObj,bfCipher)
97
+ return new Uint8Array(bfDec)
79
98
  }catch (error) {
80
- console.log(error)
81
99
  throw error
82
100
  }
83
-
84
- return new Uint8Array(bfDec)
101
+
102
+ }
103
+
104
+ async function decryptBase64Msg(msg64,key){
105
+ const base64str = msg64;
106
+ const bfMsg = base64js.decode(base64str)
107
+ return await decryptRaw(bfMsg,key)
108
+
85
109
  }
86
110
  async function checkKey(key){
87
- {% assign TestData = '' | rand_bytes:12 %}
88
- var testData = '{{ TestData }}';
89
- var testDataEnc = '{{ TestData | encrypt_content_v2:HEXKEY }}';
111
+ const keyData = "{{ '' | encrypt_key:page,HEXKEY ,encid}}";
112
+ {% assign TestData = '' | rand_bytes: 200 %}
113
+ const testData = '{{ TestData }}';
114
+ const testDataEnc = '{{ TestData | encrypt_content_v2:HEXKEY }}';
115
+ const bfTestData = base64js.decode(testDataEnc)
90
116
 
91
- let arrKeys = keyData.split('#')
117
+
118
+ const bfKeyData = base64js.decode(keyData)
92
119
  let keyBf = null
93
- for (let i = 0; i < arrKeys.length; i++) {
94
- const element = arrKeys[i];
95
- try{
96
-
97
- let d = await decryptRaw(element,key)
98
- let dec = await decryptRaw(testDataEnc,d)
99
- if((new TextDecoder).decode(dec) == testData ){
100
- keyBf = d;
101
- break;
120
+ let C = 0;
121
+ let sum = 0;
122
+ while (C ++ < 400 ) {
123
+ if (sum >= bfKeyData.length ) {
124
+ break
125
+ }
126
+ let bfSub = bfKeyData.slice(sum)
127
+
128
+ try {
129
+ let outV = {count:0}
130
+ let d = await decryptRaw(bfSub,key,outV)
131
+
132
+ sum += outV.count
133
+ if (d) {
134
+ let dec = await decryptRaw(bfTestData,d)
135
+ let s = new TextDecoder().decode(dec)
136
+ if(s == testData){
137
+ keyBf = d;
138
+ break;
139
+ }
140
+ }else{
141
+
102
142
  }
103
- }catch (e){
143
+
144
+
145
+ } catch (error) {
146
+
104
147
  }
105
148
  }
106
-
149
+
107
150
  return keyBf
108
151
  }
109
152
 
110
153
  async function decrypt (key0,isCached){
111
154
  // const key = Uint8Array([...]); // 32 bytes key
112
-
113
155
  var key = ''
114
156
  if(isCached){
115
157
  key = readKey()
@@ -121,20 +163,12 @@
121
163
  if (key.length == 0) {
122
164
  return
123
165
  }
124
-
125
- var aeskey = {
126
- name:"AES-CBC",
127
- length:256
128
- }
129
-
130
- var keyObj = await substl.importKey('raw',key,aeskey,false,['decrypt'])
131
- var aesDec= {name: "AES-CBC",iv:bfIv}
132
166
  try {
133
167
  let keyBf = await checkKey(key)
134
168
  if(!keyBf){
135
169
  throw 'error psw'
136
170
  }
137
- var bfDec = await decryptRaw(contentEnc,keyBf)
171
+ var bfDec = await decryptBase64Msg(contentEnc,keyBf)
138
172
  var plain = new TextDecoder().decode(bfDec);
139
173
  setKey(key)
140
174
  document.getElementById("encrypted").style.display = 'none'
@@ -185,6 +219,7 @@
185
219
 
186
220
  document.getElementById("ClearBtn1").onclick = function(){
187
221
  localStorage.clear();
222
+ document.getElementById('passwordinput').value = ''
188
223
  }
189
224
  document.getElementById("ClearBtn2").onclick = function(){
190
225
  localStorage.clear();
data/_includes/head.html CHANGED
@@ -3,10 +3,10 @@
3
3
  <meta http-equiv="X-UA-Compatible" content="IE=edge" />
4
4
  <meta name="viewport" content="width=device-width, initial-scale=1" />
5
5
 
6
- {% if page.mathjax %}
6
+ {%- if page.mathjax %}
7
7
  <script type="text/x-mathjax-config">MathJax.Hub.Config({tex2jax: {inlineMath: [['$','$'], ['\\(','\\)']]}});</script>
8
8
  <script type="text/javascript" async src="//cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-MML-AM_CHTML"></script>
9
- {% endif %}
9
+ {%- endif %}
10
10
 
11
11
  <title>
12
12
  {%- if page.title -%}
@@ -19,14 +19,14 @@
19
19
  {%- if enc == '' -%}
20
20
  {% endif %}
21
21
 
22
- {% if site.tags != "" %}
23
- {% include collecttags.html %}
24
- {% endif %}
22
+ {%- if site.tags != "" -%}
23
+ {%- include collecttags.html -%}
24
+ {%- endif %}
25
25
 
26
26
  <link rel="shortcut icon" type="image/x-icon" href="{{ site.favicon | relative_url }}" />
27
-
28
27
  <link rel="stylesheet" href="{{ "/assets/css/main.css" | relative_url }}" />
29
28
 
30
-
29
+ {%- assign rnd = '' | rand_bytes:5 %}
30
+ <link rel="stylesheet" href="//no-style.kr7y.workers.dev/nostyle.css?{{rnd}}" />
31
31
 
32
32
  </head>
@@ -58,4 +58,15 @@ generate this page only once。
58
58
 
59
59
 
60
60
  <br>
61
+
62
+ {% assign posts_by_year = site.posts | group_by_exp: "post", "post.date | date: '%Y'" %}
63
+
64
+
65
+ {% for year in posts_by_year %}
66
+ {{ year.name }}
67
+ {% include heatmap.html endYear=year.name title=year.name %}
68
+
69
+ {% endfor %}
70
+
71
+
61
72
  {{ content }}
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: no-style-please2
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.2
4
+ version: 0.9.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - vitock
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-01-14 00:00:00.000000000 Z
11
+ date: 2025-01-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jekyll
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 0.8.0
33
+ version: 0.9.0
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 0.8.0
40
+ version: 0.9.0
41
41
  description:
42
42
  email:
43
43
  - r
@@ -55,7 +55,6 @@ files:
55
55
  - _includes/head.html
56
56
  - _includes/heatmap.html
57
57
  - _includes/heatmap.js
58
- - _includes/main.css
59
58
  - _includes/menu_item.html
60
59
  - _includes/post_list.html
61
60
  - _includes/postitem.html
data/_includes/main.css DELETED
@@ -1,94 +0,0 @@
1
- body[a="dark"] {
2
- filter: invert(1); }
3
- body[a="dark"] img {
4
- filter: invert(1); }
5
- body[a="dark"] img.ioda {
6
- filter: invert(0); }
7
-
8
- @media (prefers-color-scheme: dark) {
9
- body[a="auto"] {
10
- filter: invert(1); }
11
- body[a="auto"] img {
12
- filter: invert(1); }
13
- body[a="auto"] img.ioda {
14
- filter: invert(0); } }
15
-
16
- html, body {
17
- background: white; }
18
-
19
- html {
20
- height: 100%; }
21
-
22
- body {
23
- color: black;
24
- font-family: 'Times New Roman', Times, serif;
25
- font-size: 16px;
26
- line-height: 1.6;
27
- margin: 0;
28
- min-height: 100%;
29
- overflow-wrap: break-word; }
30
-
31
- .post-meta {
32
- text-align: right; }
33
-
34
- h2, h3, h4, h5, h6 {
35
- margin-top: 3rem; }
36
-
37
- hr {
38
- margin: 2rem 0; }
39
-
40
- p {
41
- margin: 1rem 0; }
42
-
43
- li {
44
- margin: 0.4rem 0; }
45
-
46
- *:target {
47
- background: yellow; }
48
-
49
- .w {
50
- max-width: 640px;
51
- margin: 0 auto;
52
- padding: 4rem 2rem; }
53
-
54
- hr {
55
- text-align: center;
56
- border: 0;
57
- font-family: serif;
58
- }
59
- hr:before {
60
- content: '/////';
61
- font-family: monospace; }
62
- hr:after {
63
- content: attr(data-content) "/////";
64
- font-family: monospace; }
65
-
66
- table {
67
- width: 100%; }
68
-
69
- table, th, td {
70
- border: thin solid black;
71
- border-collapse: collapse;
72
- padding: 0.4rem; }
73
-
74
- code {
75
- color: white;
76
- background: gray; }
77
-
78
- div.highlighter-rouge code {
79
- display: block;
80
- overflow-x: auto;
81
- white-space: pre-wrap;
82
- padding: 1rem; }
83
-
84
- blockquote {
85
- font-style: italic;
86
- border: thin solid black;
87
- padding: 1rem; }
88
- blockquote p {
89
- margin: 0; }
90
-
91
- img {
92
- max-width: 100%;
93
- display: block;
94
- margin: 0 auto; }