ruby_base64 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore ADDED
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in ruby_base64.gemspec
4
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2013 yoshikizh
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,41 @@
1
+ # RubyBase64
2
+
3
+ TODO: Write a gem description
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ gem 'ruby_base64'
10
+
11
+ And then execute:
12
+
13
+ $ bundle
14
+
15
+ Or install it yourself as:
16
+
17
+ $ gem install ruby_base64
18
+
19
+ ## Usage
20
+
21
+ Base64加密算法
22
+
23
+ 1.加密
24
+ Base64.encode64(string)
25
+ string必须是字符串
26
+
27
+ 2.解密
28
+ Base64.decode64(string)
29
+ string必须是Base64加密过的字符串
30
+
31
+ 例子:
32
+ a = Base64.encode64("张三李四abcd1234")
33
+ p Base64.decode64(a)
34
+
35
+ ## Contributing
36
+
37
+ 1. Fork it
38
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
39
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
40
+ 4. Push to the branch (`git push origin my-new-feature`)
41
+ 5. Create new Pull Request
data/Rakefile ADDED
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
@@ -0,0 +1,161 @@
1
+ #encoding:utf-8
2
+
3
+ require "ruby_base64/version"
4
+
5
+ module RubyBase64
6
+
7
+ module_function
8
+
9
+ # 码表
10
+
11
+ CharBase64 = {
12
+ 0 => "A", 17 => "R", 34 => "i", 51 => "z",
13
+ 1 => "B", 18 => "S", 35 => "j", 52 => "0",
14
+ 2 => "C", 19 => "T", 36 => "k", 53 => "1",
15
+ 3 => "D", 20 => "U", 37 => "l", 54 => "2",
16
+ 4 => "E", 21 => "V", 38 => "m", 55 => "3",
17
+ 5 => "F", 22 => "W", 39 => "n", 56 => "4",
18
+ 6 => "G", 23 => "X", 40 => "o", 57 => "5",
19
+ 7 => "H", 24 => "Y", 41 => "p", 58 => "6",
20
+ 8 => "I", 25 => "Z", 42 => "q", 59 => "7",
21
+ 9 => "J", 26 => "a", 43 => "r", 60 => "8",
22
+ 10 => "K", 27 => "b", 44 => "s", 61 => "9",
23
+ 11 => "L", 28 => "c", 45 => "t", 62 => "+",
24
+ 12 => "M", 29 => "d", 46 => "u", 63 => "/",
25
+ 13 => "N", 30 => "e", 47 => "v", 64 => "=",
26
+ 14 => "O", 31 => "f", 48 => "w",
27
+ 15 => "P", 32 => "g", 49 => "x",
28
+ 16 => "Q", 33 => "h", 50 => "y"
29
+ }
30
+
31
+
32
+
33
+
34
+ # 加密
35
+ def encode64(str)
36
+
37
+ raise "参数不是一个字符串" unless str.kind_of?(String)
38
+
39
+ tstr = str.unpack("B*")
40
+
41
+ size = tstr[0].size/6
42
+ ysize = tstr[0].size%6
43
+
44
+ tstr2 = []
45
+ for i in 0...size
46
+ tstr2 << tstr[0][i*6,6]
47
+ end
48
+
49
+ # 割断码
50
+ if tstr[0].size%6 != 0
51
+ tstr2 << tstr[0][size*6,ysize] + ("0"*(6-ysize))
52
+ ym = (6- ysize)/2
53
+ end
54
+
55
+ # 补足码
56
+ tstr2.collect!{|n|CharBase64[eval("0b"+"00"+n)]}
57
+
58
+ # 特殊码
59
+ if ysize != 0
60
+ case ym
61
+ when 1
62
+ tstr2 << CharBase64[64]
63
+ when 2
64
+ tstr2 << CharBase64[64]
65
+ tstr2 << CharBase64[64]
66
+ end
67
+ end
68
+ return tstr2.join
69
+ end
70
+
71
+ # 解密
72
+ def decode64(str)
73
+ stra = str.split(//)
74
+
75
+ t = 0
76
+ stra.each{|n|
77
+ t += 1 if n == CharBase64[64]
78
+ }
79
+
80
+ t.times{stra.pop}
81
+
82
+ strb = []
83
+ strc = ""
84
+
85
+ dbase64 = CharBase64.invert
86
+
87
+ stra.each {|n|strb << dbase64[n]}
88
+
89
+ strb.collect! do |n|
90
+ n.to_s(2).length != 6 ? "0"*(6 - n.to_s(2).length) + n.to_s(2) : n.to_s(2)
91
+ end
92
+
93
+ if t > 0
94
+ tt = strb[strb.size-1]
95
+ t*2.times{tt.slice!(tt.size-1,1)}
96
+ strb[strb.size-1] = tt
97
+ end
98
+
99
+ strb.each{|n|strc+=n}
100
+
101
+ return [strc].pack("B*").delete("\000")
102
+ end
103
+
104
+ end
105
+
106
+
107
+ =begin
108
+ stra.each do |n|
109
+ for i in CharBase64.soft
110
+ if i[1] == n
111
+ strb << i[0]
112
+ break
113
+ end
114
+ end
115
+ end
116
+ =end
117
+
118
+
119
+
120
+ =begin
121
+ strb.each do |n|
122
+ if n.to_s(2).length != 6
123
+ l = 6 - n.to_s(2).length
124
+ strc += "0"*l + n.to_s(2)
125
+ else
126
+ strc += n.to_s(2)
127
+ end
128
+ end
129
+ =end
130
+
131
+ #p strd
132
+
133
+
134
+ # for i in 0...strc.size/6
135
+ # strd << strc[6*i,6]
136
+ # end
137
+
138
+
139
+
140
+
141
+ class Hash < Object
142
+ def soft
143
+ @temp = []
144
+ self.each_pair{|key, value| @temp << [key,value] }
145
+ return @temp
146
+ end
147
+ end
148
+
149
+
150
+
151
+ a = RubyBase64.encode64("张三里斯1234abcd"*5)
152
+ p RubyBase64.decode64(a)
153
+
154
+ #p [a].pack("m")
155
+
156
+ # a = Zlib::Deflate.deflate("张三李四abcd1234"*1024,9)
157
+
158
+ # p Zlib::Inflate.inflate(a)
159
+
160
+ # p [a].pack("m")
161
+
@@ -0,0 +1,3 @@
1
+ module RubyBase64
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,22 @@
1
+ # -*- encoding: utf-8 -*-
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'ruby_base64/version'
5
+
6
+ Gem::Specification.new do |gem|
7
+ gem.name = "ruby_base64"
8
+ gem.version = RubyBase64::VERSION
9
+ gem.authors = ["yoshikizh"]
10
+ gem.email = ["177365340@qq.com"]
11
+ gem.description = "base64 ruby"
12
+ gem.summary = "base64 ruby"
13
+ gem.homepage = "https://github.com/yoshikizh/ruby_base64"
14
+
15
+ gem.files = `git ls-files`.split($/)
16
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
17
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
18
+ gem.require_paths = ["lib"]
19
+
20
+ gem.add_development_dependency "rspec"
21
+ gem.add_development_dependency "bundler", ">= 1.0.0"
22
+ end
metadata ADDED
@@ -0,0 +1,86 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ruby_base64
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - yoshikizh
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-03-19 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rspec
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: bundler
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: 1.0.0
38
+ type: :development
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: 1.0.0
46
+ description: base64 ruby
47
+ email:
48
+ - 177365340@qq.com
49
+ executables: []
50
+ extensions: []
51
+ extra_rdoc_files: []
52
+ files:
53
+ - .gitignore
54
+ - Gemfile
55
+ - LICENSE.txt
56
+ - README.md
57
+ - Rakefile
58
+ - lib/ruby_base64.rb
59
+ - lib/ruby_base64/version.rb
60
+ - ruby_base64.gemspec
61
+ homepage: https://github.com/yoshikizh/ruby_base64
62
+ licenses: []
63
+ post_install_message:
64
+ rdoc_options: []
65
+ require_paths:
66
+ - lib
67
+ required_ruby_version: !ruby/object:Gem::Requirement
68
+ none: false
69
+ requirements:
70
+ - - ! '>='
71
+ - !ruby/object:Gem::Version
72
+ version: '0'
73
+ required_rubygems_version: !ruby/object:Gem::Requirement
74
+ none: false
75
+ requirements:
76
+ - - ! '>='
77
+ - !ruby/object:Gem::Version
78
+ version: '0'
79
+ requirements: []
80
+ rubyforge_project:
81
+ rubygems_version: 1.8.24
82
+ signing_key:
83
+ specification_version: 3
84
+ summary: base64 ruby
85
+ test_files: []
86
+ has_rdoc: