<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Internal user password hashing in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Internal-user-password-hashing/m-p/161457#M299781</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I’d like to say thank you to SAS Italian Support who gave the correct answer.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;As long as we do not know the way SAS encrypts passwords, we can use a different interface to do that.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Here you can find the documentation:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://support.sas.com/documentation/cdl/en/omaref/63063/PDF/default/omaref.pdf"&gt;http://support.sas.com/documentation/cdl/en/omaref/63063/PDF/default/omaref.pdf&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;And here it is some sample code:&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&lt;SPAN lang="EN-US" style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&lt;SPAN lang="EN-US" style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;MdFactoryImpl&lt;EM&gt; _factory&lt;/EM&gt; = &lt;STRONG&gt;new&lt;/STRONG&gt; MdFactoryImpl(&lt;STRONG&gt;false&lt;/STRONG&gt;);&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&lt;SPAN lang="EN-US" style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;MdObjectStore objectStore = &lt;/SPAN&gt;&lt;EM&gt;&lt;SPAN lang="EN-US" style="font-size: 10.0pt; font-family: 'Courier New'; color: #0000c0;"&gt;_factory&lt;/SPAN&gt;&lt;/EM&gt;&lt;SPAN lang="EN-US" style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;.createObjectStore();&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&lt;SPAN lang="EN-US" style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;Person person = (Person) &lt;/SPAN&gt;&lt;EM&gt;&lt;SPAN lang="EN-US" style="font-size: 10.0pt; font-family: 'Courier New'; color: #0000c0;"&gt;_factory&lt;/SPAN&gt;&lt;/EM&gt;&lt;SPAN lang="EN-US" style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;.createComplexMetadataObject(objectStore, &lt;/SPAN&gt;&lt;SPAN lang="EN-US" style="font-size: 10.0pt; font-family: 'Courier New'; color: #2a00ff;"&gt;"mike"&lt;/SPAN&gt;&lt;SPAN lang="EN-US" style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;, MetadataObjects.&lt;/SPAN&gt;&lt;EM&gt;&lt;SPAN lang="EN-US" style="font-size: 10.0pt; font-family: 'Courier New'; color: #0000c0;"&gt;PERSON&lt;/SPAN&gt;&lt;/EM&gt;&lt;SPAN lang="EN-US" style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;, shortReposID);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&lt;SPAN lang="EN-US" style="font-size: 10.0pt; font-family: 'Courier New'; color: #3f7f5f;"&gt;/* Won’t work, for we do not know the way SAS will encrypt password */&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&lt;SPAN lang="EN-US" style="font-size: 10.0pt; font-family: 'Courier New'; color: #3f7f5f;"&gt;InternalLogin internalLogin = (InternalLogin) _factory.createComplexMetadataObject(objectStore, "InternalLogin_Object", MetadataObjects.INTERNALLOGIN, shortReposID);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN lang="EN-US" style="font-size: 10.0pt; font-family: 'Courier New'; color: #3f7f5f;"&gt;internalLogin.setSalt(salt);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN lang="EN-US" style="font-size: 10.0pt; font-family: 'Courier New'; color: #3f7f5f;"&gt;internalLogin.setPasswordHash("?????????????");&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN lang="EN-US" style="font-size: 10.0pt; font-family: 'Courier New'; color: #3f7f5f;"&gt;person.setInternalLoginInfo(internalLogin);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN lang="EN-US" style="font-size: 10.0pt; font-family: 'Courier New'; color: #3f7f5f;"&gt;/*&amp;nbsp;&amp;nbsp; */&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN lang="EN-US" style="font-size: 10.0pt; font-family: 'Courier New'; color: #3f7f5f;"&gt;/* This will work instead */&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&lt;SPAN lang="EN-US" style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;MdOMRConnection connection = &lt;/SPAN&gt;&lt;SPAN lang="EN-US" style="font-size: 10.0pt; font-family: 'Courier New'; color: #0000c0;"&gt;_factory&lt;/SPAN&gt;&lt;SPAN lang="EN-US" style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;.getConnection();&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&lt;SPAN lang="EN-US" style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;ISecurity_1_1 is = connection.MakeISecurityConnection();&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN lang="EN-US" style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;is.SetInternalPassword(&lt;/SPAN&gt;&lt;SPAN lang="EN-US" style="font-size: 10.0pt; font-family: 'Courier New'; color: #2a00ff;"&gt;"mike"&lt;/SPAN&gt;&lt;SPAN lang="EN-US" style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;, &lt;/SPAN&gt;&lt;SPAN lang="EN-US" style="font-size: 10.0pt; font-family: 'Courier New'; color: #2a00ff;"&gt;"SASpw1"&lt;/SPAN&gt;&lt;SPAN lang="EN-US" style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN lang="EN-US" style="font-size: 10.0pt; font-family: 'Courier New'; color: #3f7f5f;"&gt;/*&amp;nbsp;&amp;nbsp; */&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN lang="EN-US" style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN lang="EN-US" style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;person.updateMetadataAll();&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thank you all.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 26 Feb 2015 18:35:27 GMT</pubDate>
    <dc:creator>valium</dc:creator>
    <dc:date>2015-02-26T18:35:27Z</dc:date>
    <item>
      <title>Internal user password hashing</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Internal-user-password-hashing/m-p/161453#M299777</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi guys,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;is anybody able to tell me the algorithm SAS uses to hash passwords for internal users?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Here is the picture…&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I need to create a tool for automatic user creation. I would use SAS MDU macros, however the users I have to create do need an internal account. This is why I went for the java way: I do create a person, I do create the internalUser, and I finally bind them:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://support.sas.com/rnd/javadoc/94/metadata/com/sas/metadata/remote/InternalLogin.html"&gt;http://support.sas.com/rnd/javadoc/94/metadata/com/sas/metadata/remote/InternalLogin.html&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;However, internalUser needs a passwordHash set. Obviously , I usually have salt and password, and this is why I’d need to know how to join them in order to get the salted hash. Javadoc doesn’t seem to answer this question.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;By checking the metadata through metabrowse facility, it really really looks similar to a base 64 encoding. I already tried base64(salt+hash) and many similar combinations, but it didn’t seem to work. I tried md5 as well, but I’m just guessing. Any clues?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thank you all&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Mike&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 10 Feb 2015 18:38:47 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Internal-user-password-hashing/m-p/161453#M299777</guid>
      <dc:creator>valium</dc:creator>
      <dc:date>2015-02-10T18:38:47Z</dc:date>
    </item>
    <item>
      <title>Re: Internal user password hashing</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Internal-user-password-hashing/m-p/161454#M299778</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;looks to be a part of the metadata model (DATA) &lt;A href="http://support.sas.com/documentation/cdl/en/omamodref/61849/HTML/default/viewer.htm#internallogin.htm" title="http://support.sas.com/documentation/cdl/en/omamodref/61849/HTML/default/viewer.htm#internallogin.htm"&gt;SAS(R) 9.2 Metadata Model: Reference&lt;/A&gt; (InternalLogin )&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 10 Feb 2015 19:41:44 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Internal-user-password-hashing/m-p/161454#M299778</guid>
      <dc:creator>jakarman</dc:creator>
      <dc:date>2015-02-10T19:41:44Z</dc:date>
    </item>
    <item>
      <title>Re: Internal user password hashing</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Internal-user-password-hashing/m-p/161455#M299779</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Exactly Jaap,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;both salt and passwordHash are attributes of the internalLogin metadata object.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;However, when you create a new user, you usually have a name and a password, so you have to calculate the hash.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I assume there is some kind of java utility method to do that. Knowing the procedure would do as well.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If not, there is no way you can create an internalLogin from scratch.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 10 Feb 2015 21:22:57 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Internal-user-password-hashing/m-p/161455#M299779</guid>
      <dc:creator>valium</dc:creator>
      <dc:date>2015-02-10T21:22:57Z</dc:date>
    </item>
    <item>
      <title>Re: Internal user password hashing</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Internal-user-password-hashing/m-p/161456#M299780</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;The hash is generated with the salt and password. To be able to generate the same hash the salt is needed.&amp;nbsp; &lt;BR /&gt;So the logic would be generate salt- store salt generate hash with password store hash. &lt;/P&gt;&lt;P&gt;Going in the reverse mode you would get the salt&amp;nbsp;&amp;nbsp; get (trial/input) password&amp;nbsp;&amp;nbsp; verify hash.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;As external logins must be decrypted there is a method to get the original password for those.&lt;/P&gt;&lt;P&gt;Getting in between the external connection in the internal process it should be rather easy to retrieve those.&lt;/P&gt;&lt;P&gt;Until now I have seen them being mixed up within the metadata structure. It could be a way to hack internal login by that way.&amp;nbsp; &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 11 Feb 2015 02:18:37 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Internal-user-password-hashing/m-p/161456#M299780</guid>
      <dc:creator>jakarman</dc:creator>
      <dc:date>2015-02-11T02:18:37Z</dc:date>
    </item>
    <item>
      <title>Re: Internal user password hashing</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Internal-user-password-hashing/m-p/161457#M299781</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I’d like to say thank you to SAS Italian Support who gave the correct answer.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;As long as we do not know the way SAS encrypts passwords, we can use a different interface to do that.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Here you can find the documentation:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://support.sas.com/documentation/cdl/en/omaref/63063/PDF/default/omaref.pdf"&gt;http://support.sas.com/documentation/cdl/en/omaref/63063/PDF/default/omaref.pdf&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;And here it is some sample code:&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&lt;SPAN lang="EN-US" style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&lt;SPAN lang="EN-US" style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;MdFactoryImpl&lt;EM&gt; _factory&lt;/EM&gt; = &lt;STRONG&gt;new&lt;/STRONG&gt; MdFactoryImpl(&lt;STRONG&gt;false&lt;/STRONG&gt;);&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&lt;SPAN lang="EN-US" style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;MdObjectStore objectStore = &lt;/SPAN&gt;&lt;EM&gt;&lt;SPAN lang="EN-US" style="font-size: 10.0pt; font-family: 'Courier New'; color: #0000c0;"&gt;_factory&lt;/SPAN&gt;&lt;/EM&gt;&lt;SPAN lang="EN-US" style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;.createObjectStore();&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&lt;SPAN lang="EN-US" style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;Person person = (Person) &lt;/SPAN&gt;&lt;EM&gt;&lt;SPAN lang="EN-US" style="font-size: 10.0pt; font-family: 'Courier New'; color: #0000c0;"&gt;_factory&lt;/SPAN&gt;&lt;/EM&gt;&lt;SPAN lang="EN-US" style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;.createComplexMetadataObject(objectStore, &lt;/SPAN&gt;&lt;SPAN lang="EN-US" style="font-size: 10.0pt; font-family: 'Courier New'; color: #2a00ff;"&gt;"mike"&lt;/SPAN&gt;&lt;SPAN lang="EN-US" style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;, MetadataObjects.&lt;/SPAN&gt;&lt;EM&gt;&lt;SPAN lang="EN-US" style="font-size: 10.0pt; font-family: 'Courier New'; color: #0000c0;"&gt;PERSON&lt;/SPAN&gt;&lt;/EM&gt;&lt;SPAN lang="EN-US" style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;, shortReposID);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&lt;SPAN lang="EN-US" style="font-size: 10.0pt; font-family: 'Courier New'; color: #3f7f5f;"&gt;/* Won’t work, for we do not know the way SAS will encrypt password */&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&lt;SPAN lang="EN-US" style="font-size: 10.0pt; font-family: 'Courier New'; color: #3f7f5f;"&gt;InternalLogin internalLogin = (InternalLogin) _factory.createComplexMetadataObject(objectStore, "InternalLogin_Object", MetadataObjects.INTERNALLOGIN, shortReposID);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN lang="EN-US" style="font-size: 10.0pt; font-family: 'Courier New'; color: #3f7f5f;"&gt;internalLogin.setSalt(salt);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN lang="EN-US" style="font-size: 10.0pt; font-family: 'Courier New'; color: #3f7f5f;"&gt;internalLogin.setPasswordHash("?????????????");&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN lang="EN-US" style="font-size: 10.0pt; font-family: 'Courier New'; color: #3f7f5f;"&gt;person.setInternalLoginInfo(internalLogin);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN lang="EN-US" style="font-size: 10.0pt; font-family: 'Courier New'; color: #3f7f5f;"&gt;/*&amp;nbsp;&amp;nbsp; */&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN lang="EN-US" style="font-size: 10.0pt; font-family: 'Courier New'; color: #3f7f5f;"&gt;/* This will work instead */&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&lt;SPAN lang="EN-US" style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;MdOMRConnection connection = &lt;/SPAN&gt;&lt;SPAN lang="EN-US" style="font-size: 10.0pt; font-family: 'Courier New'; color: #0000c0;"&gt;_factory&lt;/SPAN&gt;&lt;SPAN lang="EN-US" style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;.getConnection();&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&lt;SPAN lang="EN-US" style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;ISecurity_1_1 is = connection.MakeISecurityConnection();&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN lang="EN-US" style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;is.SetInternalPassword(&lt;/SPAN&gt;&lt;SPAN lang="EN-US" style="font-size: 10.0pt; font-family: 'Courier New'; color: #2a00ff;"&gt;"mike"&lt;/SPAN&gt;&lt;SPAN lang="EN-US" style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;, &lt;/SPAN&gt;&lt;SPAN lang="EN-US" style="font-size: 10.0pt; font-family: 'Courier New'; color: #2a00ff;"&gt;"SASpw1"&lt;/SPAN&gt;&lt;SPAN lang="EN-US" style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN lang="EN-US" style="font-size: 10.0pt; font-family: 'Courier New'; color: #3f7f5f;"&gt;/*&amp;nbsp;&amp;nbsp; */&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN lang="EN-US" style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN lang="EN-US" style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"&gt;person.updateMetadataAll();&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thank you all.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 26 Feb 2015 18:35:27 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Internal-user-password-hashing/m-p/161457#M299781</guid>
      <dc:creator>valium</dc:creator>
      <dc:date>2015-02-26T18:35:27Z</dc:date>
    </item>
  </channel>
</rss>

