weixin_message_encryptor 0.1.0 → 0.1.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/weixin_message_encryptor.rb +21 -16
- data/lib/weixin_message_encryptor/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b6049b7499b256402b46ba5a334a17da04973d3d
|
4
|
+
data.tar.gz: 50e24af04daa67cf41f71a9bb5c0eb4ef4d2c7e5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2020b76bcd5a7af06b99e81981b1b3e449d541838010c46dc9d3f920b76dbf4a1a5d813f58255f0229f588899c2a361c999f254f17f58088b4f47cd554c2a848
|
7
|
+
data.tar.gz: 7078ee2f92369d1929b2e32a07cc33ca9806ad4726f07cb329cb47ea0f6010758a731ea2e19590e9b1868a71044d908839a5cda36d6ffc7959a637798b712e91
|
@@ -17,27 +17,19 @@ class WeixinMessageEncryptor
|
|
17
17
|
end
|
18
18
|
|
19
19
|
def encrypt(payload)
|
20
|
-
|
21
|
-
encrypted_message(encrypted_payload)
|
20
|
+
aes_encrypt(payload).delete("\n")
|
22
21
|
end
|
23
22
|
|
24
|
-
def
|
25
|
-
encrypted_payload = payload
|
26
|
-
sign = generate_signature encrypted_payload, payload['timestamp'], payload['nonce']
|
27
|
-
message, app_id = decrypt_payload encrypted_payload
|
28
|
-
return message, app_id, sign
|
29
|
-
end
|
30
|
-
|
31
|
-
private
|
32
|
-
|
33
|
-
def aes_key
|
34
|
-
@aes_key ||= Base64.decode64 encoding_aes_key + '='
|
35
|
-
end
|
36
|
-
|
37
|
-
def encrypted_message(encrypted_payload)
|
23
|
+
def encrypt_with_signature(payload)
|
24
|
+
encrypted_payload = encrypt(payload)
|
38
25
|
timestamp = Time.now.to_i.to_s
|
39
26
|
nonce = SecureRandom.hex(8)
|
40
27
|
signature = generate_signature(encrypted_payload, timestamp, nonce)
|
28
|
+
return [encrypted_payload, timestamp, nonce, signature]
|
29
|
+
end
|
30
|
+
|
31
|
+
def encrypt_to_xml(payload)
|
32
|
+
encrypted_payload, timestamp, nonce, signature = encrypt_with_signature(payload)
|
41
33
|
<<XML
|
42
34
|
<xml>
|
43
35
|
<Encrypt><![CDATA[#{encrypted_payload}]]></Encrypt>
|
@@ -48,6 +40,19 @@ class WeixinMessageEncryptor
|
|
48
40
|
XML
|
49
41
|
end
|
50
42
|
|
43
|
+
def decrypt(payload)
|
44
|
+
encrypted_payload = payload['echostr'] || payload['xml']['Encrypt']
|
45
|
+
sign = generate_signature encrypted_payload, payload['timestamp'], payload['nonce']
|
46
|
+
message, app_id = decrypt_payload encrypted_payload
|
47
|
+
return message, app_id, sign
|
48
|
+
end
|
49
|
+
|
50
|
+
private
|
51
|
+
|
52
|
+
def aes_key
|
53
|
+
@aes_key ||= Base64.decode64 encoding_aes_key + '='
|
54
|
+
end
|
55
|
+
|
51
56
|
def decrypt_payload(encrypted_payload)
|
52
57
|
text = Base64.decode64 encrypted_payload
|
53
58
|
text = handle_cipher(:decrypt, text)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: weixin_message_encryptor
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.0
|
4
|
+
version: 0.1.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- FENG Zhichao
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-02-
|
11
|
+
date: 2018-02-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -119,7 +119,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
119
119
|
version: '0'
|
120
120
|
requirements: []
|
121
121
|
rubyforge_project:
|
122
|
-
rubygems_version: 2.
|
122
|
+
rubygems_version: 2.6.14
|
123
123
|
signing_key:
|
124
124
|
specification_version: 4
|
125
125
|
summary: A simple tool to decrypt and encrypt Weixin messages.
|