crypt-fog 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/CHANGES ADDED
@@ -0,0 +1,3 @@
1
+ 0.1.0 - 30-Jul-2003
2
+ ===================
3
+ - Initial release
data/INSTALL ADDED
@@ -0,0 +1,7 @@
1
+ To install
2
+ ==========
3
+ ruby install.rb
4
+
5
+ To run test suite
6
+ =================
7
+ ruby test/tc_fog.rb
data/MANIFEST ADDED
@@ -0,0 +1,14 @@
1
+ MANIFEST
2
+ CHANGES
3
+ INSTALL
4
+ README
5
+ install.rb
6
+ quickenc.rb
7
+
8
+ doc/fog.html
9
+ doc/fog.rd2
10
+ doc/fog.txt
11
+
12
+ lib/crypt/fog.rb
13
+
14
+ test/tc_fog.rb
data/README ADDED
@@ -0,0 +1,14 @@
1
+ crypt-fog is a simple encryption mechanism, but slightly better
2
+ than Rot13. It's primary goal is to provide a reasonable amount
3
+ of obfuscation without having to resort to public/private key
4
+ exchanges, etc.
5
+
6
+ For hyper-sensitive data I recommend using a more advanced encryption scheme.
7
+
8
+ In addition to the module, a stand-alone program is included called "quickenc.rb"
9
+ that takes both a string and a number as arguments and returns your encrypted string.
10
+ You can then copy/paste that string to a .rc file. Just remember the number you
11
+ picked in order to decrypt it.
12
+
13
+ Usage: ruby quickenc.rb -s "hello" -d 1688
14
+ ruby quickenc.rb -f "test.txt" -d 1066
data/bin/quickenc ADDED
@@ -0,0 +1,68 @@
1
+ $:.unshift Dir.pwd + "/lib"
2
+
3
+ require "getoptlong"
4
+ require "crypt/fog"
5
+ include Crypt
6
+
7
+ QUICKENC_VERSION = 1.0
8
+
9
+ def usage
10
+ print <<-HELP
11
+ Usage: quickenc -f <filename> -d <salt>
12
+ quickenc -s <string> -d <salt>
13
+ HELP
14
+ exit
15
+ end
16
+
17
+ args = GetoptLong.new(
18
+ ["--file", "-f", GetoptLong::OPTIONAL_ARGUMENT],
19
+ ["--degree", "-d", GetoptLong::REQUIRED_ARGUMENT],
20
+ ["--string", "-s", GetoptLong::OPTIONAL_ARGUMENT],
21
+ ["--version", "-v", GetoptLong::NO_ARGUMENT],
22
+ ["--help", "-h", GetoptLong::NO_ARGUMENT]
23
+ )
24
+
25
+ opts = {}
26
+ begin
27
+ args.each{ |option,value| opts[option] = value || true }
28
+ rescue GetoptLong::InvalidOption
29
+ usage()
30
+ exit
31
+ end
32
+
33
+ if opts["--version"]
34
+ puts "VERSION: " + QUICKENC_VERSION.to_s
35
+ exit
36
+ end
37
+
38
+ if opts["--help"]
39
+ usage()
40
+ end
41
+
42
+ unless opts["--file"] || opts["--string"]
43
+ STDERR.puts "Must provide string or file name"
44
+ usage()
45
+ end
46
+
47
+ unless opts["--degree"]
48
+ STDERR.puts "Must provide a degree of salt"
49
+ usage()
50
+ end
51
+
52
+ str = nil
53
+ if opts["--file"]
54
+ str = IO.readlines(opts["--file"]).flatten.to_s.chomp
55
+ else
56
+ str = opts["--string"]
57
+ end
58
+
59
+ salt = opts["--degree"].to_i
60
+
61
+ puts
62
+ puts "Copy and paste the string below to wherever you need it"
63
+ puts "Remember your salt number (#{salt}) in order to decrypt it later on."
64
+ puts "=" * 63
65
+ puts
66
+
67
+ puts "Crypted string: " + Fog.new(str,salt).to_s
68
+ puts
File without changes
data/crypt-fog.gemspec ADDED
@@ -0,0 +1,21 @@
1
+ Gem::Specification.new do |s|
2
+ s.name = %q{crypt-fog}
3
+ s.version = "0.1.0"
4
+ s.date = %q{2004-11-05}
5
+ s.summary = %q{crypt-fog is a simple encryption mechanism, but slightly better
6
+ than Rot13. It's primary goal is to provide a reasonable amount
7
+ of obfuscation without having to resort to public/private key
8
+ exchanges, etc.}
9
+ s.description = s.summary
10
+ s.author = %q{Daniel J. Berger}
11
+ s.email = %q{djberg96@yahoo.com}
12
+ s.files = Dir['**/**']
13
+ s.homepage = %q{http://ruby-miscutils.sourceforge.net/fog.html}
14
+ s.autorequire = %q{crypt/fog}
15
+ s.require_paths << %q{lib}
16
+ s.bindir = "bin"
17
+ s.executables = ["quickenc"]
18
+ s.extra_rdoc_files = ["README", "doc/fog.txt"]
19
+ s.rdoc_options = ["--main", "README"]
20
+ s.test_files = ["test/tc_fog.rb"]
21
+ end
data/doc/fog.html ADDED
@@ -0,0 +1,56 @@
1
+ <?xml version="1.0" ?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+ <html xmlns="http://www.w3.org/1999/xhtml">
6
+ <head>
7
+ <title>fog.rd2</title>
8
+ </head>
9
+ <body>
10
+ <h1><a name="label:0" id="label:0">Description</a></h1><!-- RDLabel: "Description" -->
11
+ <pre>A simple string obfuscator.</pre>
12
+ <h1><a name="label:1" id="label:1">Synopsis</a></h1><!-- RDLabel: "Synopsis" -->
13
+ <pre>include Crypt
14
+ s = Fog.new("hello",2003)
15
+ p s # ";8??B"
16
+ p s.decrypt # "hello"
17
+
18
+ Fog.decrypt(";8??B",2003) # "hello"</pre>
19
+ <h1><a name="label:2" id="label:2">Constants</a></h1><!-- RDLabel: "Constants" -->
20
+ <dl>
21
+ <dt><a name="label:3" id="label:3"><code>VERSION</code></a><!-- RDLabel: "VERSION" -->
22
+ </dl>
23
+ <pre>The current version of the module, returned as a String.</pre>
24
+ <h1><a name="label:4" id="label:4">Class Methods</a></h1><!-- RDLabel: "Class Methods" -->
25
+ <dl>
26
+ <dt><a name="label:5" id="label:5"><code>Fog.new(<var>string</var>,<var>degree</var>=<var>13</var>)</code></a></dt><!-- RDLabel: "Fog.new" -->
27
+ <dd>
28
+ <p>Creates and returns a new Fog object, which is your obfuscated string.
29
+ The degree is the value used to obfuscate the string. Method not provided here.
30
+ You'll have to look at the code. :)</p></dd>
31
+ <dt><a name="label:6" id="label:6"><code>Fog.decrypt(<var>string</var>,<var>degree</var>=<var>13</var>)</code></a></dt><!-- RDLabel: "Fog.decrypt" -->
32
+ <dd>
33
+ <p>Returns a (presumably) decrypted String. Should be used when your string comes
34
+ from an external source.</p></dd>
35
+ </dl>
36
+ <h1><a name="label:7" id="label:7">Instance Methods</a></h1><!-- RDLabel: "Instance Methods" -->
37
+ <dl>
38
+ <dt><a name="label:8" id="label:8"><code>Fog#decrypt</code></a></dt><!-- RDLabel: "Fog#decrypt" -->
39
+ <dd>
40
+ <p>Returns a decrypted String, using the degree that was provided during
41
+ initialization.</p></dd>
42
+ </dl>
43
+ <h1><a name="label:9" id="label:9">Notes</a></h1><!-- RDLabel: "Notes" -->
44
+ <pre>Fog is a subclass of String.</pre>
45
+ <h1><a name="label:10" id="label:10">License</a></h1><!-- RDLabel: "License" -->
46
+ <pre>Artistic</pre>
47
+ <h1><a name="label:11" id="label:11">Copyright</a></h1><!-- RDLabel: "Copyright" -->
48
+ <pre>(C) 2003 Daniel J. Berger
49
+ All rights reserved.</pre>
50
+ <h1><a name="label:12" id="label:12">Author</a></h1><!-- RDLabel: "Author" -->
51
+ <pre>Daniel J. Berger
52
+ djberg96 at yahoo dot com
53
+ rubyhacker1 on IRC</pre>
54
+
55
+ </body>
56
+ </html>
data/doc/fog.rd2 ADDED
@@ -0,0 +1,37 @@
1
+ =begin
2
+ = Description
3
+ A simple string obfuscator.
4
+ = Synopsis
5
+ include Crypt
6
+ s = Fog.new("hello",2003)
7
+ p s # ";8??B"
8
+ p s.decrypt # "hello"
9
+
10
+ Fog.decrypt(";8??B",2003) # "hello"
11
+ = Constants
12
+ --- VERSION
13
+ The current version of the module, returned as a String.
14
+ = Class Methods
15
+ --- Fog.new(string,degree=13)
16
+ Creates and returns a new Fog object, which is your obfuscated string.
17
+ The degree is the value used to obfuscate the string. Method not provided here.
18
+ You'll have to look at the code. :)
19
+ --- Fog.decrypt(string,degree=13)
20
+ Returns a (presumably) decrypted String. Should be used when your string comes
21
+ from an external source.
22
+ = Instance Methods
23
+ --- Fog#decrypt
24
+ Returns a decrypted String, using the degree that was provided during
25
+ initialization.
26
+ = Notes
27
+ Fog is a subclass of String.
28
+ = License
29
+ Artistic
30
+ = Copyright
31
+ (C) 2003 Daniel J. Berger
32
+ All rights reserved.
33
+ = Author
34
+ Daniel J. Berger
35
+ djberg96 at yahoo dot com
36
+ rubyhacker1 on IRC
37
+ =end
data/doc/fog.txt ADDED
@@ -0,0 +1,53 @@
1
+ Description
2
+ ===========
3
+ A simple string obfuscator.
4
+
5
+ Synopsis
6
+ ========
7
+ include Crypt
8
+ s = Fog.new("hello",2003)
9
+ p s # ";8??B"
10
+ p s.decrypt # "hello"
11
+
12
+ Fog.decrypt(";8??B",2003) # "hello"
13
+
14
+ Constants
15
+ =========
16
+ VERSION
17
+ The current version of the module, returned as a String.
18
+
19
+ Class Methods
20
+ =============
21
+ Fog.new(string,degree=13)
22
+ Creates and returns a new Fog object, which is your obfuscated string.
23
+ The degree is the value used to obfuscate the string. Method not provided here.
24
+ You'll have to look at the code. :)
25
+
26
+ Fog.decrypt(string,degree=13)
27
+ Returns a (presumably) decrypted String. Should be used when the string comes
28
+ from an external source.
29
+
30
+ Instance Methods
31
+ ================
32
+ Fog#decrypt
33
+ Returns a decrypted String, using the degree that was provided during
34
+ initialization.
35
+
36
+ Notes
37
+ =====
38
+ Fog is a subclass of String.
39
+
40
+ License
41
+ =======
42
+ Artistic
43
+
44
+ Copyright
45
+ =========
46
+ (C) 2003 Daniel J. Berger
47
+ All rights reserved.
48
+
49
+ Author
50
+ ======
51
+ Daniel J. Berger
52
+ djberg96 at yahoo dot com
53
+ rubyhacker1 on IRC
data/install.rb ADDED
@@ -0,0 +1,19 @@
1
+ require "rbconfig"
2
+ require "ftools"
3
+ include Config
4
+
5
+ sitedir = CONFIG['sitelibdir']
6
+ file = "lib/crypt/fog.rb"
7
+
8
+ begin
9
+ unless File.exist?("#{sitedir}/crypt")
10
+ Dir.mkdir("#{sitedir}/crypt")
11
+ end
12
+ puts "cp #{file} #{sitedir}/crypt"
13
+ File.copy(file,"#{sitedir}/crypt")
14
+ rescue => e
15
+ puts "Unable to copy files to sitelibdir [#{sitedir}]: #{e}"
16
+ exit
17
+ end
18
+
19
+ puts "crypt-fog installed successfully"
data/lib/crypt/fog.rb ADDED
@@ -0,0 +1,7 @@
1
+ module Crypt
2
+
3
+ # Surprise!
4
+
5
+ module_eval("\024\035\022$$\321\367 \030\321\355\321\004%#\032\037\030\273\273\321\321\321\a\366\003\004\372\000\377\321\356\321\323\341\337\342\337\341\323\273\273\321\321\321\025\026\027\321\032\037\032%\032\022\035\032+\026\331$%#\032\037\030\335\025\026\030#\026\026\356\342\344\332\273\321\321\321\321\321\321\361\025\026\030#\026\026\321\356\321\025\026\030#\026\026\337% \020\032\321\273\321\321\321\321\321\321$%#\321\356\321\026\037\024#*!%\331$%#\032\037\030\335\025\026\030#\026\026\332\273\321\321\321\321\321\321$&!\026#\331$%#\332\273\321\321\321\026\037\025\273\273\321\321\321\025\026\027\321\025\026\024#*!%\273\321\321\321\321\321\321&\037!\022\024\034\331\323\364\333\323\332\337\036\022!,\321-\026-\321\026\321\336\356\321\361\025\026\030#\026\026\321.\337!\022\024\034\331\323\364\333\323\332\273\321\321\321\026\037\025\273\273\321\321\321\025\026\027\321% \020$\273\321\321\321\321\321\321$\026\035\027\337\032\037$!\026\024%\273\321\321\321\026\037\025\273\273\321\321\321\025\026\027\321$\026\035\027\337\025\026\024#*!%\331$%#\335\025\026\030#\026\026\356\342\344\332\273\321\321\321\321\321\321$%#\337&\037!\022\024\034\331\323\364\333\323\332\337\036\022!,\321-\026-\321\026\321\336\356\321\025\026\030#\026\026\321.\337!\022\024\034\331\323\364\333\323\332\273\321\321\321\026\037\025\273\273\321\321\321!#\032'\022%\026\273\273\321\321\321\321\321\321\025\026\027\321\026\037\024#*!%\331$%#\356$\026\035\027\335\025\026\030#\026\026\356\361\025\026\030#\026\026\332\273\321\321\321\321\321\321\321\321\321$%#\337&\037!\022\024\034\331\323\364\333\323\332\337\036\022!,\321-\026-\321\026\321\334\356\321\025\026\030#\026\026\321.\337!\022\024\034\331\323\364\333\323\332\273\321\321\321\321\321\321\026\037\025\273\273\026\037\025".unpack("C*").map{ |e| e -= 1969 }.pack("C*"))
6
+
7
+ end
data/test/tc_fog.rb ADDED
@@ -0,0 +1,46 @@
1
+ ###########################
2
+ # tc_fog.rb
3
+ #
4
+ # Test suite for crypt-fog.
5
+ ###########################
6
+ if File.basename(Dir.pwd) == "test"
7
+ Dir.chdir('..')
8
+ end
9
+
10
+ $:.unshift Dir.pwd
11
+ $:.unshift Dir.pwd + "/lib"
12
+
13
+ require "test/unit"
14
+ require "crypt/fog"
15
+ include Crypt
16
+
17
+ class TC_Fog < Test::Unit::TestCase
18
+ def setup
19
+ @f = Fog.new("hello")
20
+ end
21
+
22
+ def test_01_version
23
+ assert_equal("0.1.0",Fog::VERSION,"Bad version")
24
+ end
25
+
26
+ def test_02_class_methods
27
+ assert_nothing_raised{ Fog.new("string") }
28
+ assert_nothing_raised{ Fog.new("string",55) }
29
+ assert_nothing_raised{ Fog.decrypt("string") }
30
+ assert_nothing_raised{ Fog.decrypt("string",66) }
31
+ end
32
+
33
+ def test_03_instance_methods
34
+ assert_nothing_raised{ @f.decrypt }
35
+ assert_respond_to(@f,:decrypt)
36
+ end
37
+
38
+ def test_04_types
39
+ assert_equal(Crypt::Fog,@f.class)
40
+ assert_equal(String,@f.decrypt.class)
41
+ end
42
+
43
+ def teardown
44
+ @f = nil
45
+ end
46
+ end
metadata ADDED
@@ -0,0 +1,60 @@
1
+ --- !ruby/object:Gem::Specification
2
+ rubygems_version: 0.8.1
3
+ specification_version: 1
4
+ name: crypt-fog
5
+ version: !ruby/object:Gem::Version
6
+ version: 0.1.0
7
+ date: 2004-11-05
8
+ summary: "crypt-fog is a simple encryption mechanism, but slightly better than Rot13. It's primary goal is to provide a reasonable amount of obfuscation without having to resort to public/private key exchanges, etc."
9
+ require_paths:
10
+ - lib
11
+ - lib
12
+ author: Daniel J. Berger
13
+ email: djberg96@yahoo.com
14
+ homepage: http://ruby-miscutils.sourceforge.net/fog.html
15
+ rubyforge_project:
16
+ description: "crypt-fog is a simple encryption mechanism, but slightly better than Rot13. It's primary goal is to provide a reasonable amount of obfuscation without having to resort to public/private key exchanges, etc."
17
+ autorequire: crypt/fog
18
+ default_executable:
19
+ bindir: bin
20
+ has_rdoc: false
21
+ required_ruby_version: !ruby/object:Gem::Version::Requirement
22
+ requirements:
23
+ -
24
+ - ">"
25
+ - !ruby/object:Gem::Version
26
+ version: 0.0.0
27
+ version:
28
+ platform: ruby
29
+ files:
30
+ - bin
31
+ - CHANGES
32
+ - crypt-fog-0.1.0.gem
33
+ - crypt-fog.gemspec
34
+ - doc
35
+ - INSTALL
36
+ - install.rb
37
+ - lib
38
+ - MANIFEST
39
+ - README
40
+ - test
41
+ - bin/quickenc
42
+ - doc/fog.html
43
+ - doc/fog.rd2
44
+ - doc/fog.txt
45
+ - lib/crypt
46
+ - lib/crypt/fog.rb
47
+ - test/tc_fog.rb
48
+ test_files:
49
+ - test/tc_fog.rb
50
+ rdoc_options:
51
+ - "--main"
52
+ - README
53
+ extra_rdoc_files:
54
+ - README
55
+ - doc/fog.txt
56
+ executables:
57
+ - quickenc
58
+ extensions: []
59
+ requirements: []
60
+ dependencies: []