diff --git a/README.md b/README.md
index f696eab97..add083e34 100755
--- a/README.md
+++ b/README.md
@@ -50,6 +50,7 @@ List of Definitions
* [Commander](http://github.com/visionmedia/commander.js) (by [Marcelo Dezem](https://github.com/mdezem))
* [Couchbase / Couchnode](https://github.com/couchbase/couchnode) (by [Basarat Ali Syed](https://github.com/basarat))
* [Crossfilter](https://github.com/square/crossfilter) (by [Schmulik Raskin](https://github.com/schmuli))
+* [crypto-js](https://code.google.com/p/crypto-js/) (by [Gia Bảo @ Sân Đình](https://github.com/giabao)). @see [cryptojs.d.ts repo](https://github.com/giabao/cryptojs.d.ts)
* [d3.js](http://d3js.org/) (from TypeScript samples)
* [dhtmlxGantt](http://dhtmlx.com/docs/products/dhtmlxGantt) (by [Maksim Kozhukh](http://github.com/mkozhukh))
* [dhtmlxScheduler](http://dhtmlx.com/docs/products/dhtmlxScheduler) (by [Maksim Kozhukh](http://github.com/mkozhukh))
diff --git a/cryptojs/all-tests.ts b/cryptojs/all-tests.ts
new file mode 100644
index 000000000..207ecda6b
--- /dev/null
+++ b/cryptojs/all-tests.ts
@@ -0,0 +1,57 @@
+///
+
+///
+///
+///
+///
+///
+///
+///
+///
+///
+///
+///
+///
+///
+///
+///
+///
+///
+///
+///
+///
+///
+///
+///
+///
+///
+///
+///
+///
+///
+///
+///
+///
+///
+///
+///
+///
+///
+///
+///
+///
+///
+///
+///
+///
+///
+///
+///
+///
+///
+///
+///
+///
+///
+///
+///
diff --git a/cryptojs/all-tests.ts.tscparams b/cryptojs/all-tests.ts.tscparams
new file mode 100644
index 000000000..e16c76dff
--- /dev/null
+++ b/cryptojs/all-tests.ts.tscparams
@@ -0,0 +1 @@
+""
diff --git a/cryptojs/cryptojs.d.ts b/cryptojs/cryptojs.d.ts
new file mode 100644
index 000000000..fc52995b6
--- /dev/null
+++ b/cryptojs/cryptojs.d.ts
@@ -0,0 +1,465 @@
+// Type definitions for CryptoJS 3.1.2
+// Project: https://code.google.com/p/crypto-js/
+// Definitions by:
+// Gia Bảo @ Sân Đình
+// Definitions: https://github.com/borisyankov/DefinitelyTyped
+
+declare var CryptoJS: CryptoJS.CryptoJSStatic;
+
+declare module CryptoJS{
+ module lib{
+ interface Base{
+ extend(overrides: Object): Object
+ init(...args: any[]): void
+ //arguments of create() is same as init(). This is true for all subclasses
+ create(...args: any[]): Base
+ mixIn(properties: Object): void
+ clone(): Base
+ }
+
+ interface WordArray extends Base{
+ words: number[]
+ sigBytes: number
+ init(words?: number[], sigBytes?: number): void
+ create(words?: number[], sigBytes?: number): WordArray
+
+ init(typedArray: ArrayBuffer): void
+ init(typedArray: Int8Array): void
+
+ //Because TypeScript uses a structural type system then we don't need (& can't)
+ //declare oveload function init, create for the following type (same as Int8Array):
+ //then Uint8Array, Int16Array, Uint16Array, Int32Array, Uint32Array, Float32Array, Float64Array
+ //Note also: Uint8ClampedArray is not defined in lib.d.ts & not supported in IE
+ //@see http://compatibility.shwups-cms.ch/en/home?&property=Uint8ClampedArray
+
+ create(typedArray: ArrayBuffer): WordArray
+ create(typedArray: Int8Array): WordArray
+
+ toString(encoder?: enc.IEncoder): string
+ concat(wordArray: WordArray): WordArray
+ clamp(): void
+ clone(): WordArray
+ random(nBytes: number): WordArray
+ }
+
+ interface BufferedBlockAlgorithm extends Base{
+ reset(): void
+ clone(): BufferedBlockAlgorithm
+ }
+
+ //tparam C - Configuration type
+ interface IHasher extends BufferedBlockAlgorithm{
+ cfg: C
+ init(cfg?: C): void
+ create(cfg?: C): IHasher
+
+ update(messageUpdate: WordArray): Hasher
+ update(messageUpdate: string): Hasher
+
+ finalize(messageUpdate?: WordArray): WordArray
+ finalize(messageUpdate?: string): WordArray
+
+ blockSize: number
+
+ _createHelper(hasher: Hasher): IHasherHelper
+ _createHmacHelper(hasher: Hasher): IHasherHmacHelper
+
+ clone(): IHasher
+ }
+ interface Hasher extends IHasher