diff --git a/java/com/tigervnc/rfb/VncAuth.java b/java/com/tigervnc/rfb/VncAuth.java
index cce8d81..dd84f6a 100644
--- a/java/com/tigervnc/rfb/VncAuth.java
+++ b/java/com/tigervnc/rfb/VncAuth.java
@@ -49,7 +49,7 @@
     des.encrypt(obfuscated,0,obfuscated,0);
   }
 
-  String unobfuscatePasswd(byte[] obfuscated) {
+  public static String unobfuscatePasswd(byte[] obfuscated) {
     DesCipher des = new DesCipher(obfuscationKey);
     des.decrypt(obfuscated,0,obfuscated,0);
     int len;
diff --git a/java/com/tigervnc/vncviewer/CConn.java b/java/com/tigervnc/vncviewer/CConn.java
index f49e334..136ad7c 100644
--- a/java/com/tigervnc/vncviewer/CConn.java
+++ b/java/com/tigervnc/vncviewer/CConn.java
@@ -39,6 +39,8 @@
 
 import java.io.IOException;
 import java.io.InputStream;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
 import java.util.jar.Attributes;
 import java.util.jar.Manifest;
 import javax.swing.*;
@@ -242,7 +244,30 @@
   public final boolean getUserPasswd(StringBuffer user, StringBuffer passwd) {
     String title = ("VNC Authentication ["
                     +csecurity.description() + "]");
+    String passwordFileStr = viewer.passwordFile.getValue();
     PasswdDialog dlg;    
+
+    if (user == null && passwordFileStr != "") {
+      InputStream fp = null;
+      try {
+        fp = new FileInputStream(passwordFileStr);
+      } catch(FileNotFoundException e) {
+        throw new Exception("Opening password file failed");
+      }
+      byte[] obfPwd = new byte[256];
+      try {
+        fp.read(obfPwd);
+        fp.close();
+      } catch(IOException e) {
+        throw new Exception("Failed to read VncPasswd file");
+      }
+      String PlainPasswd =
+        VncAuth.unobfuscatePasswd(obfPwd);
+      passwd.append(PlainPasswd);
+      passwd.setLength(PlainPasswd.length());
+      return true;
+    }
+
     if (user == null) {
       dlg = new PasswdDialog(title, (user == null), (passwd == null));
     } else {
diff --git a/java/com/tigervnc/vncviewer/VncViewer.java b/java/com/tigervnc/vncviewer/VncViewer.java
index 604069c..97b9427 100644
--- a/java/com/tigervnc/vncviewer/VncViewer.java
+++ b/java/com/tigervnc/vncviewer/VncViewer.java
@@ -253,6 +253,11 @@
   = new BoolParameter("SendLocalUsername",
                           "Send the local username for SecurityTypes "+
                           "such as Plain rather than prompting", true);
+  StringParameter passwordFile
+  = new StringParameter("PasswordFile",
+                          "Password file for VNC authentication", "");
+  AliasParameter passwd
+  = new AliasParameter("passwd", "Alias for PasswordFile", passwordFile);
   BoolParameter autoSelect
   = new BoolParameter("AutoSelect",
                           "Auto select pixel format and encoding", true);
