diff -ru --strip-trailing-cr BitcasaDLL-20140111/bitcasaViewer/Form1.cs BitcasaDLL-20140111b/bitcasaViewer/Form1.cs
--- BitcasaDLL-20140111/bitcasaViewer/Form1.cs	2014-01-11 01:20:14.000000000 +0900
+++ BitcasaDLL-20140111b/bitcasaViewer/Form1.cs	2014-01-11 05:53:02.000000000 +0900
@@ -9,6 +9,8 @@
 using System.Windows.Forms;
 using System.Collections;
 using System.Text.RegularExpressions;
+using System.IO;
+using System.Security.Cryptography;
 using BitcasaDLL;
 
 namespace bitcasaViewer
@@ -774,6 +776,45 @@
 
         }
 
+        private Dictionary<string, HashAlgorithm> GetHashList()
+        {
+            Dictionary<string, HashAlgorithm> hashlist = new Dictionary<string, HashAlgorithm>();
+            if (sha512ToolStripMenuItem.Checked) hashlist["SHA512"] = (new SHA512CryptoServiceProvider());
+            if (sha384ToolStripMenuItem.Checked) hashlist["SHA384"] = (new SHA384CryptoServiceProvider());
+            if (sha256ToolStripMenuItem.Checked) hashlist["SHA256"] = (new SHA256CryptoServiceProvider());
+            if (sha1ToolStripMenuItem.Checked) hashlist["SHA1"] = (new SHA1CryptoServiceProvider());
+            if (ripemd160ToolStripMenuItem.Checked) hashlist["RIPEMD160"] = (new RIPEMD160Managed());
+            if (md5ToolStripMenuItem.Checked) hashlist["MD5"] = (new MD5CryptoServiceProvider());
+            return hashlist;
+        }
+
+        private void localFileToolStripMenuItem_Click(object sender, EventArgs e)
+        {
+            if (openFileDialog1.ShowDialog() == DialogResult.OK)
+            {
+                Dictionary<string, HashAlgorithm> hashlist = GetHashList();
+
+                using (FileStream outfile = File.Open("hash.log", FileMode.Append))
+                using (StreamWriter outst = new StreamWriter(outfile))
+                {
+                    outst.WriteLine("LocalFile hash : "+openFileDialog1.FileName);
+                }
+                foreach (KeyValuePair<string, HashAlgorithm> hash in hashlist)
+                {
+                    using (FileStream f = File.Open(openFileDialog1.FileName, FileMode.Open))
+                    {
+                        string hashstr = BitConverter.ToString(hash.Value.ComputeHash(f)).Replace("-", "").ToLower();
+                        
+                        using(FileStream outfile = File.Open("hash.log",FileMode.Append))
+                        using (StreamWriter outst = new StreamWriter(outfile))
+                        {
+                            outst.WriteLine(hash.Key);
+                            outst.WriteLine(hashstr);
+                        }
+                    }
+                }
+            }
+        }
 
     }
 }
diff -ru --strip-trailing-cr BitcasaDLL-20140111/bitcasaViewer/Form1.Designer.cs BitcasaDLL-20140111b/bitcasaViewer/Form1.Designer.cs
--- BitcasaDLL-20140111/bitcasaViewer/Form1.Designer.cs	2014-01-11 01:20:14.000000000 +0900
+++ BitcasaDLL-20140111b/bitcasaViewer/Form1.Designer.cs	2014-01-11 05:52:56.000000000 +0900
@@ -37,6 +37,17 @@
             this.biToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
             this.otherToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
             this.listViewToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+            this.checksumToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+            this.localFileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+            this.downloadAutoToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+            this.uploadAutoToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+            this.toolStripSeparator4 = new System.Windows.Forms.ToolStripSeparator();
+            this.sha512ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+            this.sha384ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+            this.sha256ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+            this.sha1ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+            this.ripemd160ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+            this.md5ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
             this.profileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
             this.contextMenuStrip1 = new System.Windows.Forms.ContextMenuStrip(this.components);
             this.downloadToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
@@ -92,6 +103,7 @@
             this.reloadToolStripMenuItem,
             this.scanAllToolStripMenuItem,
             this.overlyToolStripMenuItem,
+            this.checksumToolStripMenuItem,
             this.profileToolStripMenuItem});
             this.menuStrip1.Location = new System.Drawing.Point(0, 0);
             this.menuStrip1.Name = "menuStrip1";
@@ -155,6 +167,93 @@
             this.listViewToolStripMenuItem.Text = "ListView ...";
             this.listViewToolStripMenuItem.Click += new System.EventHandler(this.listViewToolStripMenuItem_Click);
             // 
+            // checksumToolStripMenuItem
+            // 
+            this.checksumToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
+            this.localFileToolStripMenuItem,
+            this.downloadAutoToolStripMenuItem,
+            this.uploadAutoToolStripMenuItem,
+            this.toolStripSeparator4,
+            this.sha512ToolStripMenuItem,
+            this.sha384ToolStripMenuItem,
+            this.sha256ToolStripMenuItem,
+            this.sha1ToolStripMenuItem,
+            this.ripemd160ToolStripMenuItem,
+            this.md5ToolStripMenuItem});
+            this.checksumToolStripMenuItem.Name = "checksumToolStripMenuItem";
+            this.checksumToolStripMenuItem.Size = new System.Drawing.Size(80, 22);
+            this.checksumToolStripMenuItem.Text = "Checksum";
+            // 
+            // localFileToolStripMenuItem
+            // 
+            this.localFileToolStripMenuItem.Name = "localFileToolStripMenuItem";
+            this.localFileToolStripMenuItem.Size = new System.Drawing.Size(164, 22);
+            this.localFileToolStripMenuItem.Text = "Local File ...";
+            this.localFileToolStripMenuItem.Click += new System.EventHandler(this.localFileToolStripMenuItem_Click);
+            // 
+            // downloadAutoToolStripMenuItem
+            // 
+            this.downloadAutoToolStripMenuItem.CheckOnClick = true;
+            this.downloadAutoToolStripMenuItem.Name = "downloadAutoToolStripMenuItem";
+            this.downloadAutoToolStripMenuItem.Size = new System.Drawing.Size(164, 22);
+            this.downloadAutoToolStripMenuItem.Text = "Download Auto";
+            // 
+            // uploadAutoToolStripMenuItem
+            // 
+            this.uploadAutoToolStripMenuItem.CheckOnClick = true;
+            this.uploadAutoToolStripMenuItem.Name = "uploadAutoToolStripMenuItem";
+            this.uploadAutoToolStripMenuItem.Size = new System.Drawing.Size(164, 22);
+            this.uploadAutoToolStripMenuItem.Text = "Upload Auto";
+            // 
+            // toolStripSeparator4
+            // 
+            this.toolStripSeparator4.Name = "toolStripSeparator4";
+            this.toolStripSeparator4.Size = new System.Drawing.Size(161, 6);
+            // 
+            // sha512ToolStripMenuItem
+            // 
+            this.sha512ToolStripMenuItem.Checked = true;
+            this.sha512ToolStripMenuItem.CheckOnClick = true;
+            this.sha512ToolStripMenuItem.CheckState = System.Windows.Forms.CheckState.Checked;
+            this.sha512ToolStripMenuItem.Name = "sha512ToolStripMenuItem";
+            this.sha512ToolStripMenuItem.Size = new System.Drawing.Size(164, 22);
+            this.sha512ToolStripMenuItem.Text = "SHA512";
+            // 
+            // sha384ToolStripMenuItem
+            // 
+            this.sha384ToolStripMenuItem.CheckOnClick = true;
+            this.sha384ToolStripMenuItem.Name = "sha384ToolStripMenuItem";
+            this.sha384ToolStripMenuItem.Size = new System.Drawing.Size(164, 22);
+            this.sha384ToolStripMenuItem.Text = "SHA384";
+            // 
+            // sha256ToolStripMenuItem
+            // 
+            this.sha256ToolStripMenuItem.CheckOnClick = true;
+            this.sha256ToolStripMenuItem.Name = "sha256ToolStripMenuItem";
+            this.sha256ToolStripMenuItem.Size = new System.Drawing.Size(164, 22);
+            this.sha256ToolStripMenuItem.Text = "SHA256";
+            // 
+            // sha1ToolStripMenuItem
+            // 
+            this.sha1ToolStripMenuItem.CheckOnClick = true;
+            this.sha1ToolStripMenuItem.Name = "sha1ToolStripMenuItem";
+            this.sha1ToolStripMenuItem.Size = new System.Drawing.Size(164, 22);
+            this.sha1ToolStripMenuItem.Text = "SHA1";
+            // 
+            // ripemd160ToolStripMenuItem
+            // 
+            this.ripemd160ToolStripMenuItem.CheckOnClick = true;
+            this.ripemd160ToolStripMenuItem.Name = "ripemd160ToolStripMenuItem";
+            this.ripemd160ToolStripMenuItem.Size = new System.Drawing.Size(164, 22);
+            this.ripemd160ToolStripMenuItem.Text = "RIPEMD160";
+            // 
+            // md5ToolStripMenuItem
+            // 
+            this.md5ToolStripMenuItem.CheckOnClick = true;
+            this.md5ToolStripMenuItem.Name = "md5ToolStripMenuItem";
+            this.md5ToolStripMenuItem.Size = new System.Drawing.Size(164, 22);
+            this.md5ToolStripMenuItem.Text = "MD5";
+            // 
             // profileToolStripMenuItem
             // 
             this.profileToolStripMenuItem.Enabled = false;
@@ -501,6 +600,17 @@
         private System.Windows.Forms.ToolStripMenuItem profileToolStripMenuItem;
         private System.Windows.Forms.ToolStripMenuItem listViewToolStripMenuItem;
         private System.Windows.Forms.ColumnHeader mark;
+        private System.Windows.Forms.ToolStripMenuItem checksumToolStripMenuItem;
+        private System.Windows.Forms.ToolStripMenuItem localFileToolStripMenuItem;
+        private System.Windows.Forms.ToolStripSeparator toolStripSeparator4;
+        private System.Windows.Forms.ToolStripMenuItem sha512ToolStripMenuItem;
+        private System.Windows.Forms.ToolStripMenuItem sha384ToolStripMenuItem;
+        private System.Windows.Forms.ToolStripMenuItem sha256ToolStripMenuItem;
+        private System.Windows.Forms.ToolStripMenuItem sha1ToolStripMenuItem;
+        private System.Windows.Forms.ToolStripMenuItem ripemd160ToolStripMenuItem;
+        private System.Windows.Forms.ToolStripMenuItem md5ToolStripMenuItem;
+        private System.Windows.Forms.ToolStripMenuItem downloadAutoToolStripMenuItem;
+        private System.Windows.Forms.ToolStripMenuItem uploadAutoToolStripMenuItem;
     }
 }
 
diff -ru --strip-trailing-cr BitcasaDLL-20140111/bitcasaViewer/Form1_popup.cs BitcasaDLL-20140111b/bitcasaViewer/Form1_popup.cs
--- BitcasaDLL-20140111/bitcasaViewer/Form1_popup.cs	2014-01-07 05:39:42.000000000 +0900
+++ BitcasaDLL-20140111b/bitcasaViewer/Form1_popup.cs	2014-01-11 05:52:56.000000000 +0900
@@ -9,6 +9,8 @@
 using System.Windows.Forms;
 using System.Collections;
 using System.Drawing;
+using System.IO;
+using System.Security.Cryptography;
 
 
 namespace bitcasaViewer
@@ -119,6 +121,30 @@
 
                         if (ret)
                         {
+                            if (downloadAutoToolStripMenuItem.Checked)
+                            {
+                                Dictionary<string, HashAlgorithm> hashlist = GetHashList();
+
+                                using (FileStream outfile = File.Open("hash.log", FileMode.Append))
+                                using (StreamWriter outst = new StreamWriter(outfile))
+                                {
+                                    outst.WriteLine("DownloadFile hash : " + saveFileDialog1.FileName);
+                                }
+                                foreach (KeyValuePair<string, HashAlgorithm> hash in hashlist)
+                                {
+                                    using (FileStream f = File.Open(saveFileDialog1.FileName, FileMode.Open))
+                                    {
+                                        string hashstr = BitConverter.ToString(hash.Value.ComputeHash(f)).Replace("-", "").ToLower();
+
+                                        using (FileStream outfile = File.Open("hash.log", FileMode.Append))
+                                        using (StreamWriter outst = new StreamWriter(outfile))
+                                        {
+                                            outst.WriteLine(hash.Key);
+                                            outst.WriteLine(hashstr);
+                                        }
+                                    }
+                                }
+                            }
                             progress(100);
                         }
                         else
@@ -151,6 +177,8 @@
                             targetfulpass.Add(listitem.SubItems[3].Text);
                         }
                     }
+                    List<string> localfiles = new List<string>();
+
                     progress(0);
                     ongoing = true;
                     try
@@ -181,11 +209,39 @@
                                                 )
                                             );
                                             if (!ret) break;
+                                            localfiles.Add(path + item.name);
                                         }
                                     }
                                     return ret;
                                 }
                             });
+                        if (downloadAutoToolStripMenuItem.Checked)
+                        {
+                            Dictionary<string, HashAlgorithm> hashlist = GetHashList();
+
+                            foreach(string localfile in localfiles)
+                            {
+                                using (FileStream outfile = File.Open("hash.log", FileMode.Append))
+                                using (StreamWriter outst = new StreamWriter(outfile))
+                                {
+                                    outst.WriteLine("DownloadFiles hash : " + localfile);
+                                }
+                                foreach (KeyValuePair<string, HashAlgorithm> hash in hashlist)
+                                {
+                                    using (FileStream f = File.Open(localfile, FileMode.Open))
+                                    {
+                                        string hashstr = BitConverter.ToString(hash.Value.ComputeHash(f)).Replace("-", "").ToLower();
+
+                                        using (FileStream outfile = File.Open("hash.log", FileMode.Append))
+                                        using (StreamWriter outst = new StreamWriter(outfile))
+                                        {
+                                            outst.WriteLine(hash.Key);
+                                            outst.WriteLine(hashstr);
+                                        }
+                                    }
+                                }
+                            }
+                        }
                         if (result)
                         {
                             progress(100);
@@ -218,6 +274,31 @@
                 listView1.Enabled = false;
                 var filename = openFileDialog1.FileName;
                 toolStripStatusLabel1.Text = "uploading... " + filename;
+
+                if (uploadAutoToolStripMenuItem.Checked)
+                {
+                    Dictionary<string, HashAlgorithm> hashlist = GetHashList();
+
+                    using (FileStream outfile = File.Open("hash.log", FileMode.Append))
+                    using (StreamWriter outst = new StreamWriter(outfile))
+                    {
+                        outst.WriteLine("UploadFile hash : " + filename);
+                    }
+                    foreach (KeyValuePair<string, HashAlgorithm> hash in hashlist)
+                    {
+                        using (FileStream f = File.Open(filename, FileMode.Open))
+                        {
+                            string hashstr = BitConverter.ToString(hash.Value.ComputeHash(f)).Replace("-", "").ToLower();
+
+                            using (FileStream outfile = File.Open("hash.log", FileMode.Append))
+                            using (StreamWriter outst = new StreamWriter(outfile))
+                            {
+                                outst.WriteLine(hash.Key);
+                                outst.WriteLine(hashstr);
+                            }
+                        }
+                    }
+                }
                 try
                 {
                     var ret = await Task.Run(
